2018-02-17 14:58:18,712 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 14:58:18,712 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej","trace":"off"}}' 2018-02-17 14:58:18,713 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej', 'trace': 'off', 'capabilities': {}, 'rootUri': 'file:///home/matej', 'initializationOptions': {}} 2018-02-17 14:58:19,001 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 14:58:19,001 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 14:58:19,001 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 14:58:19,001 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 14:58:19,002 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 14:58:19,002 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 14:58:19,002 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 14:58:19,002 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 14:58:19,002 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 14:58:19,002 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 14:58:19,003 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 14:58:19,003 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 14:58:19,003 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 14:58:19,003 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 14:58:19,003 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-17 14:58:19,004 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: document: None config: 2018-02-17 14:58:19,004 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 14:58:19,004 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: document: None config: 2018-02-17 14:58:19,004 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 14:58:19,005 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: document: None config: 2018-02-17 14:58:19,005 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 14:58:19,005 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: document: None config: 2018-02-17 14:58:19,005 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 14:58:19,005 UTC - INFO - pyls.python_ls - Server capabilities: {'hoverProvider': True, 'definitionProvider': True, 'documentSymbolProvider': True, 'experimental': {}, 'documentRangeFormattingProvider': True, 'documentFormattingProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'referencesProvider': True, 'textDocumentSync': 2, 'codeActionProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'renameProvider': True, 'executeCommandProvider': {'commands': []}} 2018-02-17 14:58:19,009 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/t_kinit.py","version":1,"languageId":"python","text":"#!/usr/bin/env python\\nfrom __future__ import print_function\\n\\nimport logging\\nimport sys\\nimport time\\n\\nfrom ctypes import CDLL, c_char_p\\n\\nimport gi\\ngi.require_version(\'Goa\', \'1.0\')\\nfrom gi.repository import Goa\\n\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n stream=sys.stdout, level=logging.DEBUG)\\nlog = logging.getLogger(\'t_kinit\')\\n\\ngoa_blib = CDLL(\'libgoa-backend-1.0.so.1\')\\nGFALSE = 0\\nGTRUE = 1\\n\\nclass GoaProvider(object):\\n \\"\\"\\"Python bindings over GoaProvider class\\"\\"\\"\\n def __init__(self, provider_type):\\n # This is UNMUTEABLE sack of bytes\\n self.provider_type = goa_blib.goa_provider_get_for_provider_type(\\n c_char_p(provider_type))\\n log.debug(\'self.provider_type = %s (%s)\', self.provider_type,\\n type(self.provider_type))\\n\\n def refresh_account(self, client, obj):\\n cl = client # XXX how to get C version of GoaClient\\n o = obj # XXX how to get C version of GoaObject\\n res = goa_blib.goa_provider_refresh_account(self.provider_type,\\n cl, o, None, None)\\n if res == GFALSE:\\n raise IOError(\\"Account %s has not been refreshed!\\" % obj)\\n\\n\\ndef get_krb_accounts():\\n out = []\\n c = Goa.Client.new_sync(None)\\n acc_list = c.get_accounts()\\n for obj in acc_list:\\n test_a = obj.get_account()\\n if test_a.props.provider_type == \'kerberos\':\\n out.append(obj)\\n return c, out\\n\\n\\ncl, accounts = get_krb_accounts()\\nfor a in accounts:\\n acc = a.get_account()\\n # print(dir(acc))\\n # exp_secs = acc.call_ensure_credentials_sync(None)\\n # expires = time.localtime(time.time() + exp_secs)\\n # print(time.strftime(\\"%d.%m.%Y %H:%M:%S\\", expires))\\n acc_prov = GoaProvider(acc.props.provider_type)\\n acc_prov.refresh_account(cl, a)"}}}' 2018-02-17 14:58:19,010 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: document: file:///home/matej/t_kinit.py config: 2018-02-17 14:58:19,010 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 14:58:19,511 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/t_kinit.py config: 2018-02-17 14:58:19,543 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'range': {'end': {'line': 0, 'character': 22}, 'start': {'line': 0, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'range': {'end': {'line': 21, 'character': 22}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D204: 1 blank line required after class docstring (found 0)', 'code': 'D204'}, {'range': {'end': {'line': 21, 'character': 22}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': "D400: First line should end with a period (not 's')", 'code': 'D400'}, {'range': {'end': {'line': 23, 'character': 22}, 'start': {'line': 23, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'range': {'end': {'line': 30, 'character': 22}, 'start': {'line': 30, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'range': {'end': {'line': 39, 'character': 22}, 'start': {'line': 39, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D103: Missing docstring in public function', 'code': 'D103'}] 2018-02-17 14:58:19,544 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 14:58:19,544 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 14:58:19,544 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 14:58:19,544 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 14:58:19,545 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 14:58:19,545 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 14:58:19,545 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 14:58:19,545 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 14:58:19,547 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 14:58:19,547 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 14:58:19,547 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 14:58:19,548 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 14:58:19,548 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 14:58:19,548 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 14:58:19,548 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 14:58:19,548 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 14:58:19,549 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 14:58:19,572 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'range': {'end': {'line': 5, 'character': 12}, 'start': {'line': 5, 'character': 0}}, 'severity': 2, 'source': 'pyflakes', 'message': "'time' imported but unused"}], [{'range': {'end': {'line': 0, 'character': 22}, 'start': {'line': 0, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'range': {'end': {'line': 21, 'character': 22}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D204: 1 blank line required after class docstring (found 0)', 'code': 'D204'}, {'range': {'end': {'line': 21, 'character': 22}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': "D400: First line should end with a period (not 's')", 'code': 'D400'}, {'range': {'end': {'line': 23, 'character': 22}, 'start': {'line': 23, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'range': {'end': {'line': 30, 'character': 22}, 'start': {'line': 30, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'range': {'end': {'line': 39, 'character': 22}, 'start': {'line': 39, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D103: Missing docstring in public function', 'code': 'D103'}], [], [{'range': {'end': {'line': 11, 'character': 30}, 'start': {'line': 11, 'character': 0}}, 'severity': 2, 'source': 'pycodestyle', 'message': 'E402 module level import not at top of file', 'code': 'E402'}, {'range': {'end': {'line': 21, 'character': 27}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'range': {'end': {'line': 58, 'character': 35}, 'start': {'line': 58, 'character': 35}}, 'severity': 2, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-17 14:58:19,572 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/t_kinit.py', 'diagnostics': [{'range': {'end': {'line': 5, 'character': 12}, 'start': {'line': 5, 'character': 0}}, 'severity': 2, 'source': 'pyflakes', 'message': "'time' imported but unused"}, {'range': {'end': {'line': 0, 'character': 22}, 'start': {'line': 0, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'range': {'end': {'line': 21, 'character': 22}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D204: 1 blank line required after class docstring (found 0)', 'code': 'D204'}, {'range': {'end': {'line': 21, 'character': 22}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': "D400: First line should end with a period (not 's')", 'code': 'D400'}, {'range': {'end': {'line': 23, 'character': 22}, 'start': {'line': 23, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'range': {'end': {'line': 30, 'character': 22}, 'start': {'line': 30, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'range': {'end': {'line': 39, 'character': 22}, 'start': {'line': 39, 'character': 0}}, 'severity': 2, 'source': 'pydocstyle', 'message': 'D103: Missing docstring in public function', 'code': 'D103'}, {'range': {'end': {'line': 11, 'character': 30}, 'start': {'line': 11, 'character': 0}}, 'severity': 2, 'source': 'pycodestyle', 'message': 'E402 module level import not at top of file', 'code': 'E402'}, {'range': {'end': {'line': 21, 'character': 27}, 'start': {'line': 21, 'character': 0}}, 'severity': 2, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'range': {'end': {'line': 58, 'character': 35}, 'start': {'line': 58, 'character': 35}}, 'severity': 2, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-17 14:58:23,906 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/rename","jsonrpc":"2.0","id":2,"params":{"newName":"prov_t","textDocument":{"uri":"file:///home/matej/t_kinit.py"},"position":{"character":16,"line":25}}}' 2018-02-17 14:58:23,907 UTC - DEBUG - pyls.config.config - pyls_rename [hook] new_name: prov_t workspace: position: {'line': 25, 'character': 16} document: file:///home/matej/t_kinit.py config: 2018-02-17 14:58:23,911 UTC - DEBUG - pyls.plugins.rope_rename - Executing rename of provider_type to prov_t 2018-02-17 15:03:35,037 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 15:03:35,038 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej","trace":"off"}}' 2018-02-17 15:03:35,038 UTC - DEBUG - pyls.language_server - Language server initialized with {'trace': 'off', 'initializationOptions': {}, 'rootPath': '/home/matej', 'rootUri': 'file:///home/matej', 'capabilities': {}} 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 15:03:35,187 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 15:03:35,188 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 15:03:35,188 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 15:03:35,188 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 15:03:35,188 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 15:03:35,188 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 15:03:35,188 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-17 15:03:35,188 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: document: None config: 2018-02-17 15:03:35,188 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 15:03:35,188 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: document: None config: 2018-02-17 15:03:35,189 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 15:03:35,189 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: document: None config: 2018-02-17 15:03:35,189 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 15:03:35,189 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: document: None config: 2018-02-17 15:03:35,189 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 15:03:35,189 UTC - INFO - pyls.python_ls - Server capabilities: {'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'codeActionProvider': True, 'experimental': {}, 'referencesProvider': True, 'documentSymbolProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'definitionProvider': True, 'documentRangeFormattingProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'renameProvider': True, 'executeCommandProvider': {'commands': []}, 'hoverProvider': True, 'documentFormattingProvider': True, 'textDocumentSync': 2} 2018-02-17 15:03:35,192 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/t_kinit.py","version":1,"languageId":"python","text":"#!/usr/bin/env python\\nfrom __future__ import print_function\\n\\nimport logging\\nimport sys\\nimport time\\n\\nfrom ctypes import CDLL, c_char_p\\n\\nimport gi\\ngi.require_version(\'Goa\', \'1.0\')\\nfrom gi.repository import Goa\\n\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n stream=sys.stdout, level=logging.DEBUG)\\nlog = logging.getLogger(\'t_kinit\')\\n\\ngoa_blib = CDLL(\'libgoa-backend-1.0.so.1\')\\nGFALSE = 0\\nGTRUE = 1\\n\\nclass GoaProvider(object):\\n \\"\\"\\"Python bindings over GoaProvider class\\"\\"\\"\\n def __init__(self, provider_type):\\n # This is UNMUTEABLE sack of bytes\\n self.provider_type = goa_blib.goa_provider_get_for_provider_type(\\n c_char_p(provider_type))\\n log.debug(\'self.provider_type = %s (%s)\', self.provider_type,\\n type(self.provider_type))\\n\\n def refresh_account(self, client, obj):\\n cl = client # XXX how to get C version of GoaClient\\n o = obj # XXX how to get C version of GoaObject\\n res = goa_blib.goa_provider_refresh_account(self.provider_type,\\n cl, o, None, None)\\n if res == GFALSE:\\n raise IOError(\\"Account %s has not been refreshed!\\" % obj)\\n\\n\\ndef get_krb_accounts():\\n out = []\\n c = Goa.Client.new_sync(None)\\n acc_list = c.get_accounts()\\n for obj in acc_list:\\n test_a = obj.get_account()\\n if test_a.props.provider_type == \'kerberos\':\\n out.append(obj)\\n return c, out\\n\\n\\ncl, accounts = get_krb_accounts()\\nfor a in accounts:\\n acc = a.get_account()\\n # print(dir(acc))\\n # exp_secs = acc.call_ensure_credentials_sync(None)\\n # expires = time.localtime(time.time() + exp_secs)\\n # print(time.strftime(\\"%d.%m.%Y %H:%M:%S\\", expires))\\n acc_prov = GoaProvider(acc.props.provider_type)\\n acc_prov.refresh_account(cl, a)"}}}' 2018-02-17 15:03:35,193 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: document: file:///home/matej/t_kinit.py config: 2018-02-17 15:03:35,193 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 15:03:35,693 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/t_kinit.py config: 2018-02-17 15:03:35,693 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:03:35,694 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:03:35,694 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:03:35,694 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:03:35,694 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:03:35,694 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:03:35,694 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:03:35,695 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:03:35,717 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 22}}, 'message': 'D100: Missing docstring in public module', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D204', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}, 'message': 'D204: 1 blank line required after class docstring (found 0)', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D400', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}, 'message': "D400: First line should end with a period (not 's')", 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D107', 'range': {'start': {'line': 23, 'character': 0}, 'end': {'line': 23, 'character': 22}}, 'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D102', 'range': {'start': {'line': 30, 'character': 0}, 'end': {'line': 30, 'character': 22}}, 'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D103', 'range': {'start': {'line': 39, 'character': 0}, 'end': {'line': 39, 'character': 22}}, 'message': 'D103: Missing docstring in public function', 'severity': 2, 'source': 'pydocstyle'}] 2018-02-17 15:03:35,717 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:03:35,718 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:03:35,718 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:03:35,718 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:03:35,718 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:03:35,718 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:03:35,719 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:03:35,719 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:03:35,719 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:03:35,743 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'range': {'start': {'line': 5, 'character': 0}, 'end': {'line': 5, 'character': 12}}, 'message': "'time' imported but unused", 'severity': 2, 'source': 'pyflakes'}], [{'code': 'D100', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 22}}, 'message': 'D100: Missing docstring in public module', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D204', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}, 'message': 'D204: 1 blank line required after class docstring (found 0)', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D400', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}, 'message': "D400: First line should end with a period (not 's')", 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D107', 'range': {'start': {'line': 23, 'character': 0}, 'end': {'line': 23, 'character': 22}}, 'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D102', 'range': {'start': {'line': 30, 'character': 0}, 'end': {'line': 30, 'character': 22}}, 'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D103', 'range': {'start': {'line': 39, 'character': 0}, 'end': {'line': 39, 'character': 22}}, 'message': 'D103: Missing docstring in public function', 'severity': 2, 'source': 'pydocstyle'}], [{'code': 'E402', 'range': {'start': {'line': 11, 'character': 0}, 'end': {'line': 11, 'character': 30}}, 'message': 'E402 module level import not at top of file', 'severity': 2, 'source': 'pycodestyle'}, {'code': 'E302', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 27}}, 'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'source': 'pycodestyle'}, {'code': 'W292', 'range': {'start': {'line': 58, 'character': 35}, 'end': {'line': 58, 'character': 35}}, 'message': 'W292 no newline at end of file', 'severity': 2, 'source': 'pycodestyle'}]] [hook] 2018-02-17 15:03:35,743 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'range': {'start': {'line': 5, 'character': 0}, 'end': {'line': 5, 'character': 12}}, 'message': "'time' imported but unused", 'severity': 2, 'source': 'pyflakes'}, {'code': 'D100', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 22}}, 'message': 'D100: Missing docstring in public module', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D204', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}, 'message': 'D204: 1 blank line required after class docstring (found 0)', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D400', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}, 'message': "D400: First line should end with a period (not 's')", 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D107', 'range': {'start': {'line': 23, 'character': 0}, 'end': {'line': 23, 'character': 22}}, 'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D102', 'range': {'start': {'line': 30, 'character': 0}, 'end': {'line': 30, 'character': 22}}, 'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'D103', 'range': {'start': {'line': 39, 'character': 0}, 'end': {'line': 39, 'character': 22}}, 'message': 'D103: Missing docstring in public function', 'severity': 2, 'source': 'pydocstyle'}, {'code': 'E402', 'range': {'start': {'line': 11, 'character': 0}, 'end': {'line': 11, 'character': 30}}, 'message': 'E402 module level import not at top of file', 'severity': 2, 'source': 'pycodestyle'}, {'code': 'E302', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 27}}, 'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'source': 'pycodestyle'}, {'code': 'W292', 'range': {'start': {'line': 58, 'character': 35}, 'end': {'line': 58, 'character': 35}}, 'message': 'W292 no newline at end of file', 'severity': 2, 'source': 'pycodestyle'}], 'uri': 'file:///home/matej/t_kinit.py'} 2018-02-17 15:03:48,523 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/rename","jsonrpc":"2.0","id":2,"params":{"newName":"result","textDocument":{"uri":"file:///home/matej/t_kinit.py"},"position":{"character":12,"line":35}}}' 2018-02-17 15:03:48,524 UTC - DEBUG - pyls.config.config - pyls_rename [hook] new_name: result position: {'line': 35, 'character': 12} document: file:///home/matej/t_kinit.py workspace: config: 2018-02-17 15:03:48,527 UTC - DEBUG - pyls.plugins.rope_rename - Executing rename of res to result 2018-02-17 15:03:48,569 UTC - DEBUG - pyls.plugins.rope_rename - Finished rename: [] 2018-02-17 15:03:48,569 UTC - DEBUG - pyls.config.config - finish pyls_rename --> [hook] documentChanges: [{'edits': [{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 9223372036854775807, 'character': 0}}, 'newText': '#!/usr/bin/env python\nfrom __future__ import print_function\n\nimport logging\nimport sys\nimport time\n\nfrom ctypes import CDLL, c_char_p\n\nimport gi\ngi.require_version(\'Goa\', \'1.0\')\nfrom gi.repository import Goa\n\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\n stream=sys.stdout, level=logging.DEBUG)\nlog = logging.getLogger(\'t_kinit\')\n\ngoa_blib = CDLL(\'libgoa-backend-1.0.so.1\')\nGFALSE = 0\nGTRUE = 1\n\nclass GoaProvider(object):\n """Python bindings over GoaProvider class"""\n def __init__(self, provider_type):\n # This is UNMUTEABLE sack of bytes\n self.provider_type = goa_blib.goa_provider_get_for_provider_type(\n c_char_p(provider_type))\n log.debug(\'self.provider_type = %s (%s)\', self.provider_type,\n type(self.provider_type))\n\n def refresh_account(self, client, obj):\n cl = client # XXX how to get C version of GoaClient\n o = obj # XXX how to get C version of GoaObject\n result = goa_blib.goa_provider_refresh_account(self.provider_type,\n cl, o, None, None)\n if result == GFALSE:\n raise IOError("Account %s has not been refreshed!" % obj)\n\n\ndef get_krb_accounts():\n out = []\n c = Goa.Client.new_sync(None)\n acc_list = c.get_accounts()\n for obj in acc_list:\n test_a = obj.get_account()\n if test_a.props.provider_type == \'kerberos\':\n out.append(obj)\n return c, out\n\n\ncl, accounts = get_krb_accounts()\nfor a in accounts:\n acc = a.get_account()\n # print(dir(acc))\n # exp_secs = acc.call_ensure_credentials_sync(None)\n # expires = time.localtime(time.time() + exp_secs)\n # print(time.strftime("%d.%m.%Y %H:%M:%S", expires))\n acc_prov = GoaProvider(acc.props.provider_type)\n acc_prov.refresh_account(cl, a)'}], 'textDocument': {'uri': 'file:///home/matej/t_kinit.py'}}] 2018-02-17 15:16:26,372 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 15:16:26,372 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej","trace":"off"}}' 2018-02-17 15:16:26,373 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootUri': 'file:///home/matej', 'capabilities': {}, 'trace': 'off', 'initializationOptions': {}, 'rootPath': '/home/matej'} 2018-02-17 15:16:26,522 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 15:16:26,523 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 15:16:26,524 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] config: document: None workspace: 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] config: document: None workspace: 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 15:16:26,524 UTC - DEBUG - pyls.config.config - pyls_commands [hook] config: document: None workspace: 2018-02-17 15:16:26,525 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 15:16:26,525 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] config: document: None workspace: 2018-02-17 15:16:26,525 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 15:16:26,525 UTC - INFO - pyls.python_ls - Server capabilities: {'documentSymbolProvider': True, 'documentFormattingProvider': True, 'definitionProvider': True, 'textDocumentSync': 2, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'codeActionProvider': True, 'executeCommandProvider': {'commands': []}, 'codeLensProvider': {'resolveProvider': False}, 'experimental': {}, 'documentRangeFormattingProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'renameProvider': True, 'referencesProvider': True, 'hoverProvider': True} 2018-02-17 15:16:26,528 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/t_kinit.py","version":1,"languageId":"python","text":"#!/usr/bin/env python\\nfrom __future__ import print_function\\n\\nimport logging\\nimport sys\\nimport time\\n\\nfrom ctypes import CDLL, c_char_p\\n\\nimport gi\\ngi.require_version(\'Goa\', \'1.0\')\\nfrom gi.repository import Goa\\n\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n stream=sys.stdout, level=logging.DEBUG)\\nlog = logging.getLogger(\'t_kinit\')\\n\\ngoa_blib = CDLL(\'libgoa-backend-1.0.so.1\')\\nGFALSE = 0\\nGTRUE = 1\\n\\nclass GoaProvider(object):\\n \\"\\"\\"Python bindings over GoaProvider class\\"\\"\\"\\n def __init__(self, provider_type):\\n # This is UNMUTEABLE sack of bytes\\n self.provider_type = goa_blib.goa_provider_get_for_provider_type(\\n c_char_p(provider_type))\\n log.debug(\'self.provider_type = %s (%s)\', self.provider_type,\\n type(self.provider_type))\\n\\n def refresh_account(self, client, obj):\\n cl = client # XXX how to get C version of GoaClient\\n o = obj # XXX how to get C version of GoaObject\\n res = goa_blib.goa_provider_refresh_account(self.provider_type,\\n cl, o, None, None)\\n if res == GFALSE:\\n raise IOError(\\"Account %s has not been refreshed!\\" % obj)\\n\\n\\ndef get_krb_accounts():\\n out = []\\n c = Goa.Client.new_sync(None)\\n acc_list = c.get_accounts()\\n for obj in acc_list:\\n test_a = obj.get_account()\\n if test_a.props.provider_type == \'kerberos\':\\n out.append(obj)\\n return c, out\\n\\n\\ncl, accounts = get_krb_accounts()\\nfor a in accounts:\\n acc = a.get_account()\\n # print(dir(acc))\\n # exp_secs = acc.call_ensure_credentials_sync(None)\\n # expires = time.localtime(time.time() + exp_secs)\\n # print(time.strftime(\\"%d.%m.%Y %H:%M:%S\\", expires))\\n acc_prov = GoaProvider(acc.props.provider_type)\\n acc_prov.refresh_account(cl, a)"}}}' 2018-02-17 15:16:26,528 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] config: document: file:///home/matej/t_kinit.py workspace: 2018-02-17 15:16:26,528 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 15:16:27,029 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/t_kinit.py workspace: 2018-02-17 15:16:27,042 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'message': 'D100: Missing docstring in public module', 'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 22, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D400', 'message': "D400: First line should end with a period (not 's')", 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 22, 'line': 21}}, 'source': 'pydocstyle'}, {'code': 'D204', 'message': 'D204: 1 blank line required after class docstring (found 0)', 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 22, 'line': 21}}, 'source': 'pydocstyle'}, {'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'severity': 2, 'range': {'start': {'character': 0, 'line': 23}, 'end': {'character': 22, 'line': 23}}, 'source': 'pydocstyle'}, {'code': 'D102', 'message': 'D102: Missing docstring in public method', 'severity': 2, 'range': {'start': {'character': 0, 'line': 30}, 'end': {'character': 22, 'line': 30}}, 'source': 'pydocstyle'}, {'code': 'D103', 'message': 'D103: Missing docstring in public function', 'severity': 2, 'range': {'start': {'character': 0, 'line': 39}, 'end': {'character': 22, 'line': 39}}, 'source': 'pydocstyle'}] 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:16:27,045 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 15:16:27,046 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 15:16:27,047 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:16:27,058 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'D100', 'message': 'D100: Missing docstring in public module', 'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 22, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D400', 'message': "D400: First line should end with a period (not 's')", 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 22, 'line': 21}}, 'source': 'pydocstyle'}, {'code': 'D204', 'message': 'D204: 1 blank line required after class docstring (found 0)', 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 22, 'line': 21}}, 'source': 'pydocstyle'}, {'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'severity': 2, 'range': {'start': {'character': 0, 'line': 23}, 'end': {'character': 22, 'line': 23}}, 'source': 'pydocstyle'}, {'code': 'D102', 'message': 'D102: Missing docstring in public method', 'severity': 2, 'range': {'start': {'character': 0, 'line': 30}, 'end': {'character': 22, 'line': 30}}, 'source': 'pydocstyle'}, {'code': 'D103', 'message': 'D103: Missing docstring in public function', 'severity': 2, 'range': {'start': {'character': 0, 'line': 39}, 'end': {'character': 22, 'line': 39}}, 'source': 'pydocstyle'}], [{'message': "'time' imported but unused", 'severity': 2, 'range': {'start': {'character': 0, 'line': 5}, 'end': {'character': 12, 'line': 5}}, 'source': 'pyflakes'}], [], [{'message': 'E402 module level import not at top of file', 'code': 'E402', 'severity': 2, 'range': {'start': {'character': 0, 'line': 11}, 'end': {'character': 30, 'line': 11}}, 'source': 'pycodestyle'}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 27, 'line': 21}}, 'source': 'pycodestyle'}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'severity': 2, 'range': {'start': {'character': 35, 'line': 58}, 'end': {'character': 35, 'line': 58}}, 'source': 'pycodestyle'}]] [hook] 2018-02-17 15:16:27,059 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/t_kinit.py', 'diagnostics': [{'code': 'D100', 'message': 'D100: Missing docstring in public module', 'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 22, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D400', 'message': "D400: First line should end with a period (not 's')", 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 22, 'line': 21}}, 'source': 'pydocstyle'}, {'code': 'D204', 'message': 'D204: 1 blank line required after class docstring (found 0)', 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 22, 'line': 21}}, 'source': 'pydocstyle'}, {'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'severity': 2, 'range': {'start': {'character': 0, 'line': 23}, 'end': {'character': 22, 'line': 23}}, 'source': 'pydocstyle'}, {'code': 'D102', 'message': 'D102: Missing docstring in public method', 'severity': 2, 'range': {'start': {'character': 0, 'line': 30}, 'end': {'character': 22, 'line': 30}}, 'source': 'pydocstyle'}, {'code': 'D103', 'message': 'D103: Missing docstring in public function', 'severity': 2, 'range': {'start': {'character': 0, 'line': 39}, 'end': {'character': 22, 'line': 39}}, 'source': 'pydocstyle'}, {'message': "'time' imported but unused", 'severity': 2, 'range': {'start': {'character': 0, 'line': 5}, 'end': {'character': 12, 'line': 5}}, 'source': 'pyflakes'}, {'message': 'E402 module level import not at top of file', 'code': 'E402', 'severity': 2, 'range': {'start': {'character': 0, 'line': 11}, 'end': {'character': 30, 'line': 11}}, 'source': 'pycodestyle'}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'severity': 2, 'range': {'start': {'character': 0, 'line': 21}, 'end': {'character': 27, 'line': 21}}, 'source': 'pycodestyle'}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'severity': 2, 'range': {'start': {'character': 35, 'line': 58}, 'end': {'character': 35, 'line': 58}}, 'source': 'pycodestyle'}]} 2018-02-17 15:16:36,261 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/rename","jsonrpc":"2.0","id":2,"params":{"newName":"results","textDocument":{"uri":"file:///home/matej/t_kinit.py"},"position":{"character":12,"line":35}}}' 2018-02-17 15:16:36,261 UTC - DEBUG - pyls.config.config - pyls_rename [hook] config: new_name: results position: {'character': 12, 'line': 35} document: file:///home/matej/t_kinit.py workspace: 2018-02-17 15:16:36,264 UTC - DEBUG - pyls.plugins.rope_rename - Executing rename of res to results 2018-02-17 15:16:36,303 UTC - DEBUG - pyls.plugins.rope_rename - Finished rename: [] 2018-02-17 15:16:36,303 UTC - DEBUG - pyls.config.config - finish pyls_rename --> [hook] documentChanges: [{'edits': [{'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 0, 'line': 9223372036854775807}}, 'newText': '#!/usr/bin/env python\nfrom __future__ import print_function\n\nimport logging\nimport sys\nimport time\n\nfrom ctypes import CDLL, c_char_p\n\nimport gi\ngi.require_version(\'Goa\', \'1.0\')\nfrom gi.repository import Goa\n\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\n stream=sys.stdout, level=logging.DEBUG)\nlog = logging.getLogger(\'t_kinit\')\n\ngoa_blib = CDLL(\'libgoa-backend-1.0.so.1\')\nGFALSE = 0\nGTRUE = 1\n\nclass GoaProvider(object):\n """Python bindings over GoaProvider class"""\n def __init__(self, provider_type):\n # This is UNMUTEABLE sack of bytes\n self.provider_type = goa_blib.goa_provider_get_for_provider_type(\n c_char_p(provider_type))\n log.debug(\'self.provider_type = %s (%s)\', self.provider_type,\n type(self.provider_type))\n\n def refresh_account(self, client, obj):\n cl = client # XXX how to get C version of GoaClient\n o = obj # XXX how to get C version of GoaObject\n results = goa_blib.goa_provider_refresh_account(self.provider_type,\n cl, o, None, None)\n if results == GFALSE:\n raise IOError("Account %s has not been refreshed!" % obj)\n\n\ndef get_krb_accounts():\n out = []\n c = Goa.Client.new_sync(None)\n acc_list = c.get_accounts()\n for obj in acc_list:\n test_a = obj.get_account()\n if test_a.props.provider_type == \'kerberos\':\n out.append(obj)\n return c, out\n\n\ncl, accounts = get_krb_accounts()\nfor a in accounts:\n acc = a.get_account()\n # print(dir(acc))\n # exp_secs = acc.call_ensure_credentials_sync(None)\n # expires = time.localtime(time.time() + exp_secs)\n # print(time.strftime("%d.%m.%Y %H:%M:%S", expires))\n acc_prov = GoaProvider(acc.props.provider_type)\n acc_prov.refresh_account(cl, a)'}], 'textDocument': {'uri': 'file:///home/matej/t_kinit.py'}}] 2018-02-17 15:49:48,140 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 15:49:48,141 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-17 15:49:48,141 UTC - DEBUG - pyls.language_server - Language server initialized with {'initializationOptions': {}, 'capabilities': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off'} 2018-02-17 15:49:48,435 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 15:49:48,436 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 15:49:48,436 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 15:49:48,436 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 15:49:48,436 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 15:49:48,437 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 15:49:48,437 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 15:49:48,437 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 15:49:48,437 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 15:49:48,437 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 15:49:48,437 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 15:49:48,438 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 15:49:48,438 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 15:49:48,438 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 15:49:48,438 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-17 15:49:48,439 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-17 15:49:48,439 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 15:49:48,439 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-17 15:49:48,439 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 15:49:48,439 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-17 15:49:48,440 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 15:49:48,440 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-17 15:49:48,440 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 15:49:48,440 UTC - INFO - pyls.python_ls - Server capabilities: {'textDocumentSync': 2, 'codeActionProvider': True, 'experimental': {}, 'documentFormattingProvider': True, 'executeCommandProvider': {'commands': []}, 'codeLensProvider': {'resolveProvider': False}, 'documentSymbolProvider': True, 'hoverProvider': True, 'renameProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'definitionProvider': True, 'referencesProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentRangeFormattingProvider': True} 2018-02-17 15:49:48,450 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n \\n def end_verse(self, refBase):\\n prevVerseID = self.lastVerse\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + prevVerseID})\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.elem(\'verse\', attrs={\'eID\': self.refBase + \'.\' + self.lastVerse})\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count() \\n if attrs[\'n\'] != 1:\\n endVerse\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-17 15:49:48,452 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:49:48,452 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 15:49:48,953 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:49:48,953 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:49:48,953 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:49:48,954 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:49:48,954 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:49:48,954 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:49:48,955 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:49:48,955 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:49:48,955 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:49:49,094 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:49:49,107 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:49:49,108 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:49:49,108 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:49:49,108 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:49:49,108 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:49:49,109 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:49:49,109 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:49:49,109 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:49:49,109 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:49:49,114 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W293', 'range': {'end': {'line': 26, 'character': 5}, 'start': {'line': 26, 'character': 0}}, 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 31, 'character': 35}, 'start': {'line': 31, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 83}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 119}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 146, 'character': 108}, 'start': {'line': 146, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W291', 'range': {'end': {'line': 146, 'character': 108}, 'start': {'line': 146, 'character': 106}}, 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 151, 'character': 43}, 'start': {'line': 151, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 32}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 34}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 44}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 40}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 47}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 28}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 29}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 16}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 33}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 35}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 45}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 27}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 38}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 45}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 27}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 21}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 58}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 27}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 20}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 181, 'character': 27}, 'start': {'line': 181, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 185, 'character': 55}, 'start': {'line': 185, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'severity': 2, 'range': {'end': {'line': 148, 'character': 25}, 'start': {'line': 148, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}], []] [hook] 2018-02-17 15:49:49,114 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W293', 'range': {'end': {'line': 26, 'character': 5}, 'start': {'line': 26, 'character': 0}}, 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 31, 'character': 35}, 'start': {'line': 31, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 83}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 119}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 146, 'character': 108}, 'start': {'line': 146, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W291', 'range': {'end': {'line': 146, 'character': 108}, 'start': {'line': 146, 'character': 106}}, 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 151, 'character': 43}, 'start': {'line': 151, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 32}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 34}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 44}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 40}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 47}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 28}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 29}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 16}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 33}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 35}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 45}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 27}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 38}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 45}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 27}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 21}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 58}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 27}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 20}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 181, 'character': 27}, 'start': {'line': 181, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 185, 'character': 55}, 'start': {'line': 185, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 148, 'character': 25}, 'start': {'line': 148, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}]} 2018-02-17 15:50:09,256 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n \\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.elem(\'verse\', attrs={\'eID\': self.refBase + \'.\' + self.lastVerse})\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count() \\n if attrs[\'n\'] != 1:\\n endVerse\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 15:50:09,758 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:50:09,759 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:09,759 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:09,759 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:09,759 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:09,759 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:09,760 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:09,760 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:09,760 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:09,760 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:50:09,922 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:50:09,940 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:09,940 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:09,940 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:09,940 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:09,941 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:09,941 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:09,941 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:09,941 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:09,942 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:50:09,976 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W293', 'range': {'end': {'line': 26, 'character': 5}, 'start': {'line': 26, 'character': 0}}, 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 137, 'character': 83}, 'start': {'line': 137, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 108}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W291', 'range': {'end': {'line': 145, 'character': 108}, 'start': {'line': 145, 'character': 106}}, 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}], []] [hook] 2018-02-17 15:50:09,976 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W293', 'range': {'end': {'line': 26, 'character': 5}, 'start': {'line': 26, 'character': 0}}, 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 137, 'character': 83}, 'start': {'line': 137, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 108}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W291', 'range': {'end': {'line': 145, 'character': 108}, 'start': {'line': 145, 'character': 106}}, 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}]} 2018-02-17 15:50:15,208 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.elem(\'verse\', attrs={\'eID\': self.refBase + \'.\' + self.lastVerse})\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count()\\n if attrs[\'n\'] != 1:\\n endVerse\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 15:50:15,210 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 15:50:15,711 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:50:15,712 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:15,712 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:15,713 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:15,713 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:15,713 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:15,713 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:15,714 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:15,714 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:15,714 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:50:15,862 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:50:15,873 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:15,874 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:15,874 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:15,874 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:15,874 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:15,875 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:15,875 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:15,875 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:15,875 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:50:15,879 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 137, 'character': 83}, 'start': {'line': 137, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 107}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}], []] [hook] 2018-02-17 15:50:15,879 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 137, 'character': 83}, 'start': {'line': 137, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 107}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}]} 2018-02-17 15:50:46,084 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count()\\n if attrs[\'n\'] != 1:\\n endVerse\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-17 15:50:46,586 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:50:46,586 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:46,587 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:46,587 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:46,587 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:46,587 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:46,587 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:46,588 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:46,588 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:46,588 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:50:46,646 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:50:46,653 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:46,653 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:46,653 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:46,654 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:46,654 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:46,654 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:46,654 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:46,654 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:46,654 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:50:46,656 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 107}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}], []] [hook] 2018-02-17 15:50:46,656 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 107}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}]} 2018-02-17 15:50:47,817 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count()\\n if attrs[\'n\'] != 1:\\n endVerse\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 15:50:47,818 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 15:50:48,319 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:50:48,319 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:48,319 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:48,319 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:48,319 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:48,320 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:48,320 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:48,320 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:48,320 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:48,320 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:50:48,385 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:50:48,391 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:50:48,392 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:50:48,395 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 107}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}], []] [hook] 2018-02-17 15:50:48,395 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'line': 30, 'character': 35}, 'start': {'line': 30, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 138, 'character': 82}, 'start': {'line': 138, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 144, 'character': 119}, 'start': {'line': 144, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 107}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 150, 'character': 43}, 'start': {'line': 150, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 152, 'character': 32}, 'start': {'line': 152, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 34}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 44}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 40}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 47}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 28}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 29}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 16}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 33}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 35}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 45}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 27}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 38}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 21}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 48}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 58}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 27}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 20}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 180, 'character': 27}, 'start': {'line': 180, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 184, 'character': 55}, 'start': {'line': 184, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 30, 'character': 19}, 'start': {'line': 30, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 36, 'character': 19}, 'start': {'line': 36, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 100, 'character': 19}, 'start': {'line': 100, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 147, 'character': 25}, 'start': {'line': 147, 'character': 16}}, 'message': "undefined name 'endVerse'", 'source': 'pyflakes'}]} 2018-02-17 15:51:57,741 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-17 15:51:58,243 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:51:58,243 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:51:58,243 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:51:58,243 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:51:58,243 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:51:58,244 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:51:58,244 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:51:58,244 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:51:58,244 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:51:58,244 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:51:58,309 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:51:58,316 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:51:58,317 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:51:58,317 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:51:58,319 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 119}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 146, 'character': 107}, 'start': {'line': 146, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 151, 'character': 43}, 'start': {'line': 151, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 32}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 34}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 44}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 40}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 47}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 28}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 29}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 16}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 33}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 35}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 45}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 27}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 38}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 45}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 27}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 21}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 58}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 27}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 20}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 181, 'character': 27}, 'start': {'line': 181, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 185, 'character': 55}, 'start': {'line': 185, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 15:51:58,319 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 119}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 146, 'character': 107}, 'start': {'line': 146, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 151, 'character': 43}, 'start': {'line': 151, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 32}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 34}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 44}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 40}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 47}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 28}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 29}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 16}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 33}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 35}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 45}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 27}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 38}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 45}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 27}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 21}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 58}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 27}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 20}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 181, 'character': 27}, 'start': {'line': 181, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 185, 'character': 55}, 'start': {'line': 185, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 15:52:09,284 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter; notice that element is milestoned as well,\\n # so we have to count a distance in elements from it, rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 15:52:09,285 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 15:52:09,786 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:52:09,786 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:09,786 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:52:09,786 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:52:09,787 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:09,787 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:09,787 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:09,787 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:52:09,787 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:09,787 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:52:09,927 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:52:09,936 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:09,936 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:52:09,936 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:52:09,936 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:09,936 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:09,937 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:09,937 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:52:09,937 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:09,937 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:52:09,942 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 119}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 146, 'character': 107}, 'start': {'line': 146, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 151, 'character': 43}, 'start': {'line': 151, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 32}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 34}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 44}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 40}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 47}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 28}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 29}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 16}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 33}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 35}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 45}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 27}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 38}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 45}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 27}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 21}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 58}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 27}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 20}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 181, 'character': 27}, 'start': {'line': 181, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 185, 'character': 55}, 'start': {'line': 185, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 15:52:09,943 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 145, 'character': 119}, 'start': {'line': 145, 'character': 79}}, 'message': 'E501 line too long (118 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 146, 'character': 107}, 'start': {'line': 146, 'character': 79}}, 'message': 'E501 line too long (106 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 151, 'character': 43}, 'start': {'line': 151, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 153, 'character': 32}, 'start': {'line': 153, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 154, 'character': 34}, 'start': {'line': 154, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 44}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 40}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 47}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 28}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 29}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 16}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 33}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 35}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 45}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 27}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 38}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 45}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 27}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 21}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 58}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 27}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 20}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 181, 'character': 27}, 'start': {'line': 181, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 185, 'character': 55}, 'start': {'line': 185, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 15:52:29,496 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n\\n\\n self.lastVerse = self.curVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # main\\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-17 15:52:29,498 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-17 15:52:29,998 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:52:29,999 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:30,000 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 15:52:30,067 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 176, 'character': 19}, 'start': {'line': 176, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 15:52:30,073 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 15:52:30,074 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 15:52:30,081 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 153, 'character': 43}, 'start': {'line': 153, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 32}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 34}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 44}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 40}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 47}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 28}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 29}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 16}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 33}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 35}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 38}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 45}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 27}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 21}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 48}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 58}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 173, 'character': 27}, 'start': {'line': 173, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 174, 'character': 20}, 'start': {'line': 174, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 183, 'character': 27}, 'start': {'line': 183, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 187, 'character': 55}, 'start': {'line': 187, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 176, 'character': 19}, 'start': {'line': 176, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 15:52:30,082 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'E302', 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'line': 153, 'character': 43}, 'start': {'line': 153, 'character': 12}}, 'message': 'E303 too many blank lines (2)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 155, 'character': 32}, 'start': {'line': 155, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 156, 'character': 34}, 'start': {'line': 156, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 157, 'character': 44}, 'start': {'line': 157, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 158, 'character': 40}, 'start': {'line': 158, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 159, 'character': 47}, 'start': {'line': 159, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 160, 'character': 28}, 'start': {'line': 160, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 161, 'character': 29}, 'start': {'line': 161, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 162, 'character': 16}, 'start': {'line': 162, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 163, 'character': 33}, 'start': {'line': 163, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 164, 'character': 35}, 'start': {'line': 164, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 165, 'character': 45}, 'start': {'line': 165, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 166, 'character': 27}, 'start': {'line': 166, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 167, 'character': 38}, 'start': {'line': 167, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 168, 'character': 45}, 'start': {'line': 168, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 169, 'character': 27}, 'start': {'line': 169, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 170, 'character': 21}, 'start': {'line': 170, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 171, 'character': 48}, 'start': {'line': 171, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 172, 'character': 58}, 'start': {'line': 172, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 173, 'character': 27}, 'start': {'line': 173, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'line': 174, 'character': 20}, 'start': {'line': 174, 'character': 2}}, 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'line': 183, 'character': 27}, 'start': {'line': 183, 'character': 0}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'line': 187, 'character': 55}, 'start': {'line': 187, 'character': 55}}, 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'code': 'D100', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'line': 176, 'character': 19}, 'start': {'line': 176, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:06:11,543 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 16:06:11,544 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-17 16:06:11,544 UTC - DEBUG - pyls.language_server - Language server initialized with {'capabilities': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off', 'initializationOptions': {}} 2018-02-17 16:06:11,814 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 16:06:11,814 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 16:06:11,814 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 16:06:11,814 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 16:06:11,815 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 16:06:11,815 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 16:06:11,815 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 16:06:11,815 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 16:06:11,815 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 16:06:11,816 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 16:06:11,816 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 16:06:11,816 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 16:06:11,816 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 16:06:11,816 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 16:06:11,816 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-17 16:06:11,817 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-17 16:06:11,817 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 16:06:11,817 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-17 16:06:11,817 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 16:06:11,817 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-17 16:06:11,818 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 16:06:11,818 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-17 16:06:11,818 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 16:06:11,818 UTC - INFO - pyls.python_ls - Server capabilities: {'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'executeCommandProvider': {'commands': []}, 'referencesProvider': True, 'experimental': {}, 'codeActionProvider': True, 'hoverProvider': True, 'textDocumentSync': 2, 'documentSymbolProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'renameProvider': True, 'definitionProvider': True, 'documentRangeFormattingProvider': True, 'documentFormattingProvider': True, 'codeLensProvider': {'resolveProvider': False}} 2018-02-17 16:06:11,830 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n \\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n \\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n \\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n # \xc3\x97\\n\\n # \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n \\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-17 16:06:11,831 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:06:11,832 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 16:06:12,332 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:06:12,333 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:12,333 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:12,333 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:12,334 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:12,334 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:12,335 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:12,335 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:12,336 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:06:12,494 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:06:12,495 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:12,495 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:12,495 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:12,495 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:12,496 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:12,496 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:12,496 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:12,496 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:12,496 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:06:12,515 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 29, 'character': 5}, 'start': {'line': 29, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 9}, 'start': {'line': 155, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 165, 'character': 9}, 'start': {'line': 165, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 49}, 'start': {'line': 171, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 193, 'character': 9}, 'start': {'line': 193, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 27}, 'start': {'line': 197, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 55}, 'start': {'line': 201, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:06:12,516 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 29, 'character': 5}, 'start': {'line': 29, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 9}, 'start': {'line': 155, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 165, 'character': 9}, 'start': {'line': 165, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 49}, 'start': {'line': 171, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 193, 'character': 9}, 'start': {'line': 193, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 27}, 'start': {'line': 197, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 55}, 'start': {'line': 201, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:06:17,817 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n # \xc3\x97\\n\\n # \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 16:06:17,821 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 16:06:18,322 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:06:18,322 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:18,323 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:18,323 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:18,323 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:18,323 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:18,323 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:18,324 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:18,324 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:18,324 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:06:18,471 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:06:18,472 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:18,472 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:18,472 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:18,472 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:18,472 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:18,473 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:18,473 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:18,473 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:18,473 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:06:18,511 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 49}, 'start': {'line': 171, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 27}, 'start': {'line': 197, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 55}, 'start': {'line': 201, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:06:18,512 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 14, 'character': 36}, 'start': {'line': 14, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 82}, 'start': {'line': 139, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 169, 'character': 48}, 'start': {'line': 169, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 49}, 'start': {'line': 171, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 27}, 'start': {'line': 197, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 55}, 'start': {'line': 201, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 14, 'character': 19}, 'start': {'line': 14, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 19}, 'start': {'line': 27, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 19}, 'start': {'line': 37, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 19}, 'start': {'line': 101, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 106, 'character': 19}, 'start': {'line': 106, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:06:29,614 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n # \xc3\x97\\n\\n # \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 16:06:30,116 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:06:30,116 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:30,116 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:30,116 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:30,117 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:30,117 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:30,117 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:30,117 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:30,117 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:30,118 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:06:30,256 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:06:30,257 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:30,257 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:30,257 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:30,257 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:30,257 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:30,258 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:30,258 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:30,258 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:30,258 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:06:30,274 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 170, 'character': 48}, 'start': {'line': 170, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 49}, 'start': {'line': 172, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 27}, 'start': {'line': 198, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 55}, 'start': {'line': 202, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:06:30,275 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 170, 'character': 48}, 'start': {'line': 170, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 49}, 'start': {'line': 172, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 27}, 'start': {'line': 198, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 55}, 'start': {'line': 202, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:06:31,225 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n # \xc3\x97\\n\\n # \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-17 16:06:31,227 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-17 16:06:31,727 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:06:31,728 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:31,728 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:31,728 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:31,729 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:31,729 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:31,729 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:31,730 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:31,730 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:31,730 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:06:31,888 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:06:31,889 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:31,889 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:31,890 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:31,890 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:31,890 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:31,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:31,891 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:31,891 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:31,891 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:06:31,912 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 170, 'character': 48}, 'start': {'line': 170, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 49}, 'start': {'line': 172, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 27}, 'start': {'line': 198, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 55}, 'start': {'line': 202, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:06:31,912 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 170, 'character': 48}, 'start': {'line': 170, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 49}, 'start': {'line': 172, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 27}, 'start': {'line': 198, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 55}, 'start': {'line': 202, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:06:52,837 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n # \xc3\x97\\n\\n # \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 16:06:53,339 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:06:53,339 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:53,339 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:53,339 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:53,339 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:53,339 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:53,340 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:53,340 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:53,340 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:53,340 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:06:53,405 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 19}, 'start': {'line': 191, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:06:53,405 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:06:53,406 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:06:53,415 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 48}, 'start': {'line': 173, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 175, 'character': 49}, 'start': {'line': 175, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 27}, 'start': {'line': 201, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 205, 'character': 55}, 'start': {'line': 205, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 19}, 'start': {'line': 191, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:06:53,415 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 48}, 'start': {'line': 173, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 175, 'character': 49}, 'start': {'line': 175, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 27}, 'start': {'line': 201, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 205, 'character': 55}, 'start': {'line': 205, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 19}, 'start': {'line': 191, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:07:19,415 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n # \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-17 16:07:19,916 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:07:19,916 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:19,916 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:19,917 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:07:19,991 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 19}, 'start': {'line': 192, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:07:19,991 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:19,992 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:07:20,001 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 176, 'character': 49}, 'start': {'line': 176, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 27}, 'start': {'line': 202, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 206, 'character': 55}, 'start': {'line': 206, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 19}, 'start': {'line': 192, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:07:20,001 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 176, 'character': 49}, 'start': {'line': 176, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 27}, 'start': {'line': 202, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 206, 'character': 55}, 'start': {'line': 206, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 19}, 'start': {'line': 192, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:07:29,937 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 16:07:29,942 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 16:07:30,443 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:07:30,443 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:30,443 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:07:30,444 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:07:30,444 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:30,444 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:30,444 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:30,444 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:07:30,445 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:30,445 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:07:30,592 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 190, 'character': 19}, 'start': {'line': 190, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:07:30,593 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:30,593 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:07:30,593 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:07:30,593 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:30,594 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:30,594 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:07:30,594 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:07:30,594 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:07:30,594 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:07:30,614 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 200, 'character': 27}, 'start': {'line': 200, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 204, 'character': 55}, 'start': {'line': 204, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 190, 'character': 19}, 'start': {'line': 190, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [], []] [hook] 2018-02-17 16:07:30,614 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 200, 'character': 27}, 'start': {'line': 200, 'character': 0}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 204, 'character': 55}, 'start': {'line': 204, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 190, 'character': 19}, 'start': {'line': 190, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}]} 2018-02-17 16:09:12,818 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n []\\n\\n \\n\\n \\n \xe2\x8c\x88\\n\\n \xe2\x8c\x89\\n\\n \\n \xe2\x80\xa6\\n \\n \xc4\x81\\n\\n \xc5\x8d\\n \\n \\n \xe1\xb8\xa5\\n\\n \\n \xe2\x82\x91\\n\\n \xe2\x82\x90\\n \\n \xe2\x80\x98\\n\\n \xe2\x80\x99\\n\\n \xc3\xa2\\n \\n \xe1\xb8\x87\\n \\n \xe1\xb8\x8f\\n \\n \xc3\xaa\\n \\n \xc4\x93\\n \\n \xe1\xb8\xa1\\n \\n \xc3\xae\\n \\n \xe1\xb8\xb5\\n \\n \xc5\x9b\\n \\n \xe1\xb9\xa3\\n \\n \xe1\xb9\xad\\n \\n \xe1\xb9\xaf\\n \\n \xc3\xb4\\n \\n \xc3\xbb\\n \\n \\n \xe2\x81\xb0\\n \\n \\n \xe1\xb9\x97\\n \\n \\n *\\n \\n \\n $\\n \\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-17 16:09:13,320 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:09:13,320 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:13,320 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:09:13,320 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:09:13,320 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:13,321 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:13,321 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:13,321 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:09:13,321 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:13,321 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:09:13,358 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:09:13,358 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:13,358 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:09:13,358 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:09:13,358 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:13,358 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:13,359 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:13,359 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:09:13,359 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:13,359 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:09:13,360 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 181, 'character': 74}, 'start': {'line': 181, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 181, 'character': 148}, 'start': {'line': 181, 'character': 74}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:09:13,360 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 181, 'character': 74}, 'start': {'line': 181, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 181, 'character': 148}, 'start': {'line': 181, 'character': 74}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:09:36,020 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n ]\\n\\n \\n\\n \\n \xe2\x8c\x88\\n\\n \xe2\x8c\x89\\n\\n \\n \xe2\x80\xa6\\n \\n \xc4\x81\\n\\n \xc5\x8d\\n \\n \\n \xe1\xb8\xa5\\n\\n \\n \xe2\x82\x91\\n\\n \xe2\x82\x90\\n \\n \xe2\x80\x98\\n\\n \xe2\x80\x99\\n\\n \xc3\xa2\\n \\n \xe1\xb8\x87\\n \\n \xe1\xb8\x8f\\n \\n \xc3\xaa\\n \\n \xc4\x93\\n \\n \xe1\xb8\xa1\\n \\n \xc3\xae\\n \\n \xe1\xb8\xb5\\n \\n \xc5\x9b\\n \\n \xe1\xb9\xa3\\n \\n \xe1\xb9\xad\\n \\n \xe1\xb9\xaf\\n \\n \xc3\xb4\\n \\n \xc3\xbb\\n \\n \\n \xe2\x81\xb0\\n \\n \\n \xe1\xb9\x97\\n \\n \\n *\\n \\n \\n $\\n \\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-17 16:09:36,521 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:09:36,521 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:36,522 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:09:36,563 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:09:36,563 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:36,563 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:09:36,563 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:09:36,563 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:36,563 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:36,564 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:09:36,564 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:09:36,564 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:09:36,564 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:09:36,565 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 181, 'character': 73}, 'start': {'line': 181, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 181, 'character': 146}, 'start': {'line': 181, 'character': 73}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:09:36,565 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 181, 'character': 73}, 'start': {'line': 181, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 181, 'character': 146}, 'start': {'line': 181, 'character': 73}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:10:39,284 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n \xe2\x8c\x88\\n\\n \xe2\x8c\x89\\n\\n \\n \xe2\x80\xa6\\n \\n \xc4\x81\\n\\n \xc5\x8d\\n \\n \\n \xe1\xb8\xa5\\n\\n \\n \xe2\x82\x91\\n\\n \xe2\x82\x90\\n \\n \xe2\x80\x98\\n\\n \xe2\x80\x99\\n\\n \xc3\xa2\\n \\n \xe1\xb8\x87\\n \\n \xe1\xb8\x8f\\n \\n \xc3\xaa\\n \\n \xc4\x93\\n \\n \xe1\xb8\xa1\\n \\n \xc3\xae\\n \\n \xe1\xb8\xb5\\n \\n \xc5\x9b\\n \\n \xe1\xb9\xa3\\n \\n \xe1\xb9\xad\\n \\n \xe1\xb9\xaf\\n \\n \xc3\xb4\\n \\n \xc3\xbb\\n \\n \\n \xe2\x81\xb0\\n \\n \\n \xe1\xb9\x97\\n \\n \\n *\\n \\n \\n $\\n \\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-17 16:10:39,785 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:10:39,786 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:10:39,787 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:10:39,827 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:10:39,827 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:10:39,828 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:10:39,830 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 51}, 'start': {'line': 184, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 102}, 'start': {'line': 184, 'character': 51}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:10:39,830 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 51}, 'start': {'line': 184, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 102}, 'start': {'line': 184, 'character': 51}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:13:49,211 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements -->\\n \xe2\x80\xa6\\n \\n \xc4\x81\\n\\n \xc5\x8d\\n \\n \\n \xe1\xb8\xa5\\n\\n \\n \xe2\x82\x91\\n\\n \xe2\x82\x90\\n \\n \xe2\x80\x98\\n\\n \xe2\x80\x99\\n\\n \xc3\xa2\\n \\n \xe1\xb8\x87\\n \\n \xe1\xb8\x8f\\n \\n \xc3\xaa\\n \\n \xc4\x93\\n \\n \xe1\xb8\xa1\\n \\n \xc3\xae\\n \\n \xe1\xb8\xb5\\n \\n \xc5\x9b\\n \\n \xe1\xb9\xa3\\n \\n \xe1\xb9\xad\\n \\n \xe1\xb9\xaf\\n \\n \xc3\xb4\\n \\n \xc3\xbb\\n \\n \\n \xe2\x81\xb0\\n \\n \\n \xe1\xb9\x97\\n \\n \\n *\\n \\n \\n $\\n \\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:13:49,713 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:13:49,714 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:13:49,714 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:13:49,714 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:13:49,756 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:13:49,757 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:13:49,759 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:13:49,759 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:14:22,139 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n \\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n \\n # used for example in note t9 on page 15 for Gn 4:3\\n \xe1\xb8\xa5\\n\\n \\n \xe2\x82\x91\\n\\n \xe2\x82\x90\\n \\n \xe2\x80\x98\\n\\n \xe2\x80\x99\\n\\n \xc3\xa2\\n \\n \xe1\xb8\x87\\n \\n \xe1\xb8\x8f\\n \\n \xc3\xaa\\n \\n \xc4\x93\\n \\n \xe1\xb8\xa1\\n \\n \xc3\xae\\n \\n \xe1\xb8\xb5\\n \\n \xc5\x9b\\n \\n \xe1\xb9\xa3\\n \\n \xe1\xb9\xad\\n \\n \xe1\xb9\xaf\\n \\n \xc3\xb4\\n \\n \xc3\xbb\\n \\n \\n \xe2\x81\xb0\\n \\n \\n \xe1\xb9\x97\\n \\n \\n *\\n \\n \\n $\\n \\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-17 16:14:22,641 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:14:22,641 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:22,641 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:14:22,641 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:14:22,642 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:22,642 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:22,642 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:22,642 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:14:22,642 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:22,642 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:14:22,679 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:14:22,679 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:22,679 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:22,680 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:14:22,682 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:14:22,682 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:14:39,508 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n \\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n \\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not superscript\\n used e.g., for elohim, note v2 on page. 11.\\n -->\\n \xe2\x82\x91\\n\\n \xe2\x82\x90\\n \\n \xe2\x80\x98\\n\\n \xe2\x80\x99\\n\\n \xc3\xa2\\n \\n \xe1\xb8\x87\\n \\n \xe1\xb8\x8f\\n \\n \xc3\xaa\\n \\n \xc4\x93\\n \\n \xe1\xb8\xa1\\n \\n \xc3\xae\\n \\n \xe1\xb8\xb5\\n \\n \xc5\x9b\\n \\n \xe1\xb9\xa3\\n \\n \xe1\xb9\xad\\n \\n \xe1\xb9\xaf\\n \\n \xc3\xb4\\n \\n \xc3\xbb\\n \\n \\n \xe2\x81\xb0\\n \\n \\n \xe1\xb9\x97\\n \\n \\n *\\n \\n \\n $\\n \\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-17 16:14:40,009 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:14:40,010 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:40,010 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:14:40,010 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:14:40,010 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:40,010 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:40,011 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:40,011 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:14:40,011 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:40,011 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:14:40,048 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:14:40,049 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:14:40,050 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:14:40,050 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:15:55,288 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n \\n \xe1\xb9\x97\\n\\n \\n *\\n\\n \\n $\\n\\n \\n &\\n\\n \\n \xe2\x80\xa0\\n\\n \\n ~\\n\\n \\n //\\n\\n \xe2\x80\x93\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-17 16:15:55,290 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-17 16:15:55,791 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:15:55,792 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:15:55,792 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:15:55,792 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:15:55,792 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:15:55,793 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:15:55,793 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:15:55,793 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:15:55,794 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:15:55,794 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:15:55,883 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:15:55,884 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:15:55,884 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:15:55,884 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:15:55,884 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:15:55,884 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:15:55,885 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:15:55,885 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:15:55,885 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:15:55,885 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:15:55,888 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:15:55,888 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:16:40,820 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n \\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n \\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n \\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n \\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n \\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9) -->\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-17 16:16:41,321 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:16:41,322 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:41,322 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:16:41,322 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:16:41,322 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:41,322 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:41,322 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:41,323 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:16:41,323 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:41,323 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:16:41,360 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:16:41,360 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:41,360 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:16:41,360 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:16:41,360 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:41,361 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:41,361 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:41,361 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:16:41,361 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:41,361 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:16:41,362 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:16:41,362 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:16:49,388 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n \\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n \\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n \\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n \\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-17 16:16:49,889 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:16:49,889 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:16:49,890 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:49,891 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:49,934 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:49,935 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:16:49,935 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:49,935 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:16:49,936 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:16:49,936 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:16:56,044 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n \\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n \\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n \\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd ekvivalent pou\xc5\xbeit -->\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-17 16:16:56,545 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:16:56,546 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:56,546 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:16:56,546 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:16:56,546 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:56,546 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:56,546 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:56,547 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:16:56,547 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:56,547 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:56,584 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:16:56,585 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:16:56,585 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:16:56,585 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:16:56,586 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:16:56,586 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:17:06,396 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n \\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n \\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter? -->\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-17 16:17:06,897 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:17:06,897 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:06,898 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:17:06,939 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:17:06,939 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:06,940 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:17:06,942 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:17:06,942 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:17:14,827 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n \\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":19}}}' 2018-02-17 16:17:15,328 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:17:15,329 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:15,329 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:15,329 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:15,329 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:15,329 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:15,329 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:15,330 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:15,330 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:15,330 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:15,368 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:15,369 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:15,369 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:17:15,370 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:17:15,370 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:17:20,731 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n previous and following occurence of the expression or idiom -->\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-17 16:17:21,232 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:17:21,232 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:21,233 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:21,233 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:21,233 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:21,233 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:21,233 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:21,233 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:21,234 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:21,234 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:21,271 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:21,272 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:21,272 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:21,272 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:17:21,273 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:17:21,273 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:17:28,885 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-17 16:17:28,887 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-17 16:17:29,388 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:17:29,388 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:29,388 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:29,389 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:29,389 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:29,389 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:29,389 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:29,390 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:29,390 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:29,390 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:17:29,471 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:17:29,472 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:29,472 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:29,472 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:29,472 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:29,472 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:29,473 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:29,473 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:29,473 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:29,473 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:17:29,477 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:17:29,477 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 184, 'character': 36}, 'start': {'line': 184, 'character': 10}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 184, 'character': 72}, 'start': {'line': 184, 'character': 36}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:17:56,566 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-17 16:17:56,568 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-17 16:17:57,069 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:17:57,069 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:57,069 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:57,069 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:57,070 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:57,070 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:57,070 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:57,070 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:57,071 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:57,071 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:17:57,287 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 311, 'character': 19}, 'start': {'line': 311, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:17:57,287 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:57,287 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:17:57,288 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:17:57,288 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:57,288 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:57,288 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:17:57,289 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:17:57,289 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:17:57,289 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:17:57,316 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 185, 'character': 34}, 'start': {'line': 185, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 34}, 'start': {'line': 188, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 34}, 'start': {'line': 192, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 195, 'character': 34}, 'start': {'line': 195, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 34}, 'start': {'line': 198, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 34}, 'start': {'line': 202, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 207, 'character': 34}, 'start': {'line': 207, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 210, 'character': 34}, 'start': {'line': 210, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 34}, 'start': {'line': 213, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 216, 'character': 34}, 'start': {'line': 216, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 219, 'character': 34}, 'start': {'line': 219, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 34}, 'start': {'line': 222, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 225, 'character': 34}, 'start': {'line': 225, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 228, 'character': 34}, 'start': {'line': 228, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 231, 'character': 34}, 'start': {'line': 231, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 234, 'character': 34}, 'start': {'line': 234, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 237, 'character': 34}, 'start': {'line': 237, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 240, 'character': 34}, 'start': {'line': 240, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 34}, 'start': {'line': 243, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 246, 'character': 34}, 'start': {'line': 246, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 249, 'character': 34}, 'start': {'line': 249, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 252, 'character': 34}, 'start': {'line': 252, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 255, 'character': 34}, 'start': {'line': 255, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 258, 'character': 34}, 'start': {'line': 258, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 262, 'character': 34}, 'start': {'line': 262, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 266, 'character': 34}, 'start': {'line': 266, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 34}, 'start': {'line': 271, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 34}, 'start': {'line': 275, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 279, 'character': 38}, 'start': {'line': 279, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 284, 'character': 34}, 'start': {'line': 284, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 288, 'character': 34}, 'start': {'line': 288, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 292, 'character': 35}, 'start': {'line': 292, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 295, 'character': 34}, 'start': {'line': 295, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 55}, 'start': {'line': 329, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 311, 'character': 19}, 'start': {'line': 311, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 48 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:17:57,316 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 185, 'character': 34}, 'start': {'line': 185, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 34}, 'start': {'line': 188, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 34}, 'start': {'line': 192, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 195, 'character': 34}, 'start': {'line': 195, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 34}, 'start': {'line': 198, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 34}, 'start': {'line': 202, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 207, 'character': 34}, 'start': {'line': 207, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 210, 'character': 34}, 'start': {'line': 210, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 34}, 'start': {'line': 213, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 216, 'character': 34}, 'start': {'line': 216, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 219, 'character': 34}, 'start': {'line': 219, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 34}, 'start': {'line': 222, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 225, 'character': 34}, 'start': {'line': 225, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 228, 'character': 34}, 'start': {'line': 228, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 231, 'character': 34}, 'start': {'line': 231, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 234, 'character': 34}, 'start': {'line': 234, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 237, 'character': 34}, 'start': {'line': 237, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 240, 'character': 34}, 'start': {'line': 240, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 34}, 'start': {'line': 243, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 246, 'character': 34}, 'start': {'line': 246, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 249, 'character': 34}, 'start': {'line': 249, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 252, 'character': 34}, 'start': {'line': 252, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 255, 'character': 34}, 'start': {'line': 255, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 258, 'character': 34}, 'start': {'line': 258, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 262, 'character': 34}, 'start': {'line': 262, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 266, 'character': 34}, 'start': {'line': 266, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 34}, 'start': {'line': 271, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 34}, 'start': {'line': 275, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 279, 'character': 38}, 'start': {'line': 279, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 284, 'character': 34}, 'start': {'line': 284, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 288, 'character': 34}, 'start': {'line': 288, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 292, 'character': 35}, 'start': {'line': 292, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 295, 'character': 34}, 'start': {'line': 295, 'character': 10}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 55}, 'start': {'line': 329, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 311, 'character': 19}, 'start': {'line': 311, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 48 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:18:56,607 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":23}}}' 2018-02-17 16:18:56,608 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":23}}}' 2018-02-17 16:18:57,109 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:18:57,109 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:18:57,110 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:18:57,110 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:18:57,110 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:18:57,110 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:18:57,111 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:18:57,111 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:18:57,111 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:18:57,111 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:18:57,330 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 311, 'character': 19}, 'start': {'line': 311, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:18:57,331 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:18:57,331 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:18:57,331 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:18:57,332 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:18:57,332 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:18:57,332 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:18:57,332 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:18:57,332 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:18:57,333 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:18:57,359 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 55}, 'start': {'line': 329, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 311, 'character': 19}, 'start': {'line': 311, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 48 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:18:57,359 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 55}, 'start': {'line': 329, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 311, 'character': 19}, 'start': {'line': 311, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 48 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:19:52,262 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple words\\n (except of grammatical particle \\"by\\" (for conditional), zvratn\xc3\xa9 pronoun \\"se\\",\\n auxilliary verb \\"b\xc3\xbdt\\" (to be) and demonstrative (ukazovac\xc3\xadch) pronouns),\\n they are in majority cases marked by the element . E.g., Mt 3:17\\n kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was saying\xe2\x80\x9d\\n\\n Fow now we go by the path of the least resistance ... keep \\n element intact and process it with a Python script.\\n\\n Actually, after discussion with the original translators we came to\\n the conclusion that the case of the spoj element is hopeless, a way\\n more complicated, and it should be just ignored.\\n -->\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-17 16:19:52,764 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:19:52,764 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:19:52,764 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:19:52,764 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:19:52,765 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:19:52,765 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:19:52,765 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:19:52,765 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:19:52,765 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:19:52,766 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:19:52,834 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:19:52,835 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:19:52,837 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 298, 'character': 80}, 'start': {'line': 298, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 298, 'character': 160}, 'start': {'line': 298, 'character': 80}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:19:52,838 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 298, 'character': 80}, 'start': {'line': 298, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 298, 'character': 160}, 'start': {'line': 298, 'character': 80}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:20:12,623 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # \\n Fow now we go by the path of the least resistance ... keep \\n element intact and process it with a Python script.\\n\\n Actually, after discussion with the original translators we came to\\n the conclusion that the case of the spoj element is hopeless, a way\\n more complicated, and it should be just ignored.\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-17 16:20:13,124 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:20:13,124 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:13,124 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:13,125 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:20:13,182 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:20:13,182 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:13,182 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:13,182 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:13,182 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:13,182 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:13,183 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:13,183 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:13,183 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:13,183 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:20:13,185 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 305, 'character': 11}, 'start': {'line': 305, 'character': 9}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 306, 'character': 68}, 'start': {'line': 306, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 306, 'character': 136}, 'start': {'line': 306, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:20:13,185 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 305, 'character': 11}, 'start': {'line': 305, 'character': 9}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 306, 'character': 68}, 'start': {'line': 306, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 306, 'character': 136}, 'start': {'line': 306, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:20:20,622 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we came to\\n the conclusion that the case of the spoj element is hopeless, a way\\n more complicated, and it should be just ignored.\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-17 16:20:21,124 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:20:21,124 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:21,124 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:21,124 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:21,124 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:21,124 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:21,125 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:21,125 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:21,125 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:21,125 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:21,179 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:21,180 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:21,180 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:21,180 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:20:21,181 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 309, 'character': 70}, 'start': {'line': 309, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 309, 'character': 140}, 'start': {'line': 309, 'character': 70}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:20:21,181 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 309, 'character': 70}, 'start': {'line': 309, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 309, 'character': 140}, 'start': {'line': 309, 'character': 70}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:20:32,270 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":27}}}' 2018-02-17 16:20:32,771 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:20:32,771 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:32,772 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:20:32,841 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:20:32,841 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:32,841 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:32,841 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:32,841 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:32,841 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:32,842 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:32,842 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:32,842 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:32,842 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:20:32,844 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 55}, 'start': {'line': 347, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 312, 'character': 65}, 'start': {'line': 312, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:20:32,844 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 55}, 'start': {'line': 347, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'range': {'end': {'line': 312, 'character': 65}, 'start': {'line': 312, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:20:33,166 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-17 16:20:33,667 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:20:33,668 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:33,668 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:33,668 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:33,668 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:33,668 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:33,668 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:33,669 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:33,669 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:33,669 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:20:33,734 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:20:33,734 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:33,734 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:33,735 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:20:33,737 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 15}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 9}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 10}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 24}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 55}, 'start': {'line': 347, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 312, 'character': 65}, 'start': {'line': 312, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:20:33,737 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 56}, 'start': {'line': 312, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 15}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 9}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 10}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 313, 'character': 26}, 'start': {'line': 313, 'character': 24}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 55}, 'start': {'line': 347, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'range': {'end': {'line': 312, 'character': 65}, 'start': {'line': 312, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:20:35,503 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":29}}}' 2018-02-17 16:20:35,505 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":29}}}' 2018-02-17 16:20:36,007 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:20:36,007 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:36,007 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:36,007 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:36,007 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:36,008 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:36,008 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:36,008 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:36,008 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:36,008 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:20:36,073 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:20:36,073 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:36,073 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:36,073 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:36,073 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:36,073 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:36,074 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:36,074 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:36,074 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:36,074 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:20:36,076 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 55}, 'start': {'line': 346, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 312, 'character': 83}, 'start': {'line': 312, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:20:36,076 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 74}, 'start': {'line': 312, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 55}, 'start': {'line': 346, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'range': {'end': {'line': 312, 'character': 83}, 'start': {'line': 312, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:20:59,094 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":30}}}' 2018-02-17 16:20:59,595 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:20:59,596 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:59,596 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:59,596 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:59,596 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:59,596 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:59,597 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:59,597 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:59,597 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:59,597 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:20:59,656 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:20:59,657 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:20:59,659 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 55}, 'start': {'line': 349, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:20:59,659 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 55}, 'start': {'line': 349, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:21:08,014 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":31}}}' 2018-02-17 16:21:08,515 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:21:08,515 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:21:08,516 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:08,517 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:21:08,576 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:21:08,576 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:08,576 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:21:08,576 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:21:08,577 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:08,577 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:08,577 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:08,577 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:21:08,577 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:08,577 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:21:08,579 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 55}, 'start': {'line': 349, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:21:08,579 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 55}, 'start': {'line': 349, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:21:08,765 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":32}}}' 2018-02-17 16:21:08,771 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":32}}}' 2018-02-17 16:21:09,272 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:21:09,272 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:09,273 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:09,338 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:09,339 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:21:09,339 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:09,339 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:21:09,341 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 55}, 'start': {'line': 349, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:21:09,341 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 12}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 39}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 63}}, 'code': 'E231', 'message': "E231 missing whitespace after ':'", 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 27}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 34}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 35}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 57}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 58}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 74}, 'start': {'line': 315, 'character': 72}}, 'code': 'E225', 'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 55}, 'start': {'line': 349, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 9}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:21:33,096 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-17 16:21:33,097 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-17 16:21:33,598 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:21:33,598 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:33,598 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:21:33,599 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:21:33,599 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:33,599 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:33,599 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:33,600 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:21:33,600 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:33,600 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:21:33,823 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 19}, 'start': {'line': 329, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:21:33,823 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:33,824 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:21:33,824 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:21:33,824 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:33,824 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:33,824 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:21:33,825 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:21:33,825 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:21:33,825 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:21:33,852 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 55}, 'start': {'line': 347, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 19}, 'start': {'line': 329, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 49 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:21:33,852 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 55}, 'start': {'line': 347, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 329, 'character': 19}, 'start': {'line': 329, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 49 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:22:13,633 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n \\n \\n \\n robinson:V-2RAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":34}}}' 2018-02-17 16:22:14,134 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:14,135 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:14,136 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:22:14,196 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:22:14,196 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:14,196 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:14,196 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:14,196 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:14,196 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:14,197 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:14,197 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:14,197 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:14,197 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:22:14,199 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 315, 'character': 166}, 'start': {'line': 315, 'character': 83}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:22:14,199 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 83}, 'start': {'line': 315, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 315, 'character': 166}, 'start': {'line': 315, 'character': 83}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:22:17,840 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which happened in the\\n past, but which consequences are still visible in the present time; Mt 1:22)\\n -->\\n \\n \\n robinson:V-2RAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":35}}}' 2018-02-17 16:22:18,341 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:22:18,341 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:18,341 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:18,342 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:18,342 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:18,342 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:18,342 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:18,342 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:18,342 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:18,343 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:22:18,397 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:22:18,397 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:18,397 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:18,397 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:18,397 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:18,397 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:18,398 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:18,398 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:18,398 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:18,398 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:22:18,399 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 86}, 'start': {'line': 315, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 316, 'character': 79}, 'start': {'line': 316, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 316, 'character': 158}, 'start': {'line': 316, 'character': 79}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:22:18,400 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 86}, 'start': {'line': 315, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 316, 'character': 79}, 'start': {'line': 316, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 316, 'character': 158}, 'start': {'line': 316, 'character': 79}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:22:28,432 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif \\n \\n \\n robinson:V-2RAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":36}}}' 2018-02-17 16:22:28,933 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:22:28,934 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:28,934 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:28,934 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:28,934 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:28,934 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:28,934 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:28,935 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:28,935 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:28,935 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:22:28,993 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:28,994 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:28,995 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:28,995 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:22:28,996 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 318, 'character': 10}, 'start': {'line': 318, 'character': 8}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 319, 'character': 30}, 'start': {'line': 319, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 318, 'character': 18}, 'start': {'line': 318, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:22:28,996 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 318, 'character': 10}, 'start': {'line': 318, 'character': 8}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 319, 'character': 30}, 'start': {'line': 319, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 318, 'character': 18}, 'start': {'line': 318, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:22:36,857 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n\\n \\n \\n robinson:V-2RAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-17 16:22:37,359 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:22:37,359 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:37,359 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:37,360 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:22:37,420 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:22:37,420 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:37,420 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:37,421 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:22:37,423 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 320, 'character': 30}, 'start': {'line': 320, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 318, 'character': 33}, 'start': {'line': 318, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:22:37,423 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 320, 'character': 30}, 'start': {'line': 320, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 318, 'character': 33}, 'start': {'line': 318, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:22:58,040 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'\'})\\n \\n \\n robinson:V-2RAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":38}}}' 2018-02-17 16:22:58,542 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:22:58,542 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:58,542 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:58,542 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:58,542 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:58,542 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:58,543 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:58,543 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:58,543 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:58,543 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:22:58,598 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:22:58,598 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:58,598 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:22:58,598 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:22:58,598 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:58,598 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:58,599 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:22:58,599 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:22:58,599 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:22:58,599 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:22:58,601 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 320, 'character': 30}, 'start': {'line': 320, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 320, 'character': 60}, 'start': {'line': 320, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:22:58,601 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 320, 'character': 30}, 'start': {'line': 320, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 320, 'character': 60}, 'start': {'line': 320, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:23:13,444 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n \\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-17 16:23:13,446 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-17 16:23:13,947 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:23:13,948 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:13,948 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:23:13,948 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:23:13,948 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:13,949 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:13,949 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:13,949 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:23:13,949 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:13,949 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:23:14,069 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:23:14,069 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:14,069 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:23:14,069 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:23:14,070 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:14,070 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:14,070 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:14,070 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:23:14,070 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:14,071 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:23:14,074 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 321, 'character': 81}, 'start': {'line': 321, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 321, 'character': 162}, 'start': {'line': 321, 'character': 81}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:23:14,074 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 321, 'character': 81}, 'start': {'line': 321, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 321, 'character': 162}, 'start': {'line': 321, 'character': 81}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:23:28,752 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects are possible.\\n This marks majority of cases where both aspects are possible. (Mt 1:21) -->\\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":40}}}' 2018-02-17 16:23:29,253 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:23:29,253 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:29,254 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:23:29,308 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:23:29,308 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:29,308 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:29,309 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:23:29,311 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 321, 'character': 84}, 'start': {'line': 321, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (83 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 322, 'character': 78}, 'start': {'line': 322, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 322, 'character': 156}, 'start': {'line': 322, 'character': 78}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:23:29,311 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 321, 'character': 84}, 'start': {'line': 321, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (83 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 322, 'character': 78}, 'start': {'line': 322, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 322, 'character': 156}, 'start': {'line': 322, 'character': 78}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:23:54,096 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\')\\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":41}}}' 2018-02-17 16:23:54,598 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:23:54,598 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:54,598 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:23:54,598 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:23:54,599 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:54,599 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:54,599 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:54,599 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:23:54,599 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:54,599 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:54,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:23:54,656 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:23:54,656 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:23:54,656 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:23:54,658 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 326, 'character': 29}, 'start': {'line': 326, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 324, 'character': 32}, 'start': {'line': 324, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:23:54,658 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 326, 'character': 29}, 'start': {'line': 326, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 324, 'character': 32}, 'start': {'line': 324, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:24:05,607 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n elif name == \'fut\':\\n \\n \\n robinson:V-FAI-3S\\n \\n \\n \\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":42}}}' 2018-02-17 16:24:06,109 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:24:06,109 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:06,109 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:24:06,109 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:24:06,109 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:06,110 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:06,110 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:06,110 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:24:06,110 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:06,110 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:24:06,166 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:24:06,166 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:06,167 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:24:06,169 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 29}, 'start': {'line': 327, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 326, 'character': 32}, 'start': {'line': 326, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:24:06,169 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 29}, 'start': {'line': 327, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 326, 'character': 32}, 'start': {'line': 326, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:24:29,953 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n \\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-17 16:24:29,955 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-17 16:24:30,456 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:24:30,456 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:30,456 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:24:30,456 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:24:30,456 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:30,456 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:30,457 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:30,457 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:24:30,457 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:30,457 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:24:30,519 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:24:30,519 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:30,519 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:24:30,519 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:24:30,519 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:30,519 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:30,520 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:24:30,520 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:24:30,520 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:24:30,520 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:24:30,522 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 81}, 'start': {'line': 327, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 327, 'character': 162}, 'start': {'line': 327, 'character': 81}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:24:30,522 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 81}, 'start': {'line': 327, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 327, 'character': 162}, 'start': {'line': 327, 'character': 81}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:25:10,360 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n \\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n \\n \\n robinson:V-PEI-3S\\n \\n \\n \\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":44}}}' 2018-02-17 16:25:10,861 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:25:10,861 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:25:10,862 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:10,863 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:25:10,929 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:25:10,930 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:10,931 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:25:10,932 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 81}, 'start': {'line': 327, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 327, 'character': 162}, 'start': {'line': 327, 'character': 81}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:25:10,933 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 81}, 'start': {'line': 327, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 327, 'character': 162}, 'start': {'line': 327, 'character': 81}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:25:34,856 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been translated into\\n Czech as a past tense (e.g.: \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1).\\n If there is in the Greek text participium of the present tense attached to the\\n main verb, then the mark is only on the main verb (Mt 2:13) -->\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":45}}}' 2018-02-17 16:25:35,357 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:25:35,357 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:35,358 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:25:35,358 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:25:35,358 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:35,358 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:35,358 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:35,358 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:25:35,359 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:35,359 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:25:35,415 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:25:35,415 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:35,415 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:25:35,415 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:25:35,415 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:35,415 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:35,416 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:35,416 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:25:35,416 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:35,416 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:25:35,417 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 84}, 'start': {'line': 327, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (83 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 328, 'character': 65}, 'start': {'line': 328, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 328, 'character': 130}, 'start': {'line': 328, 'character': 65}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:25:35,418 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 84}, 'start': {'line': 327, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (83 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 328, 'character': 65}, 'start': {'line': 328, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 328, 'character': 130}, 'start': {'line': 328, 'character': 65}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:25:49,034 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-17 16:25:49,035 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-17 16:25:49,536 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:25:49,536 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:49,536 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:25:49,536 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:25:49,536 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:49,536 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:49,537 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:49,537 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:25:49,537 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:49,537 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:25:49,648 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 19}, 'start': {'line': 349, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:25:49,649 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:49,649 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:25:49,650 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:25:49,650 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:49,650 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:49,650 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:25:49,651 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:25:49,651 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:25:49,651 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:25:49,687 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 367, 'character': 55}, 'start': {'line': 367, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 19}, 'start': {'line': 349, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 52 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:25:49,687 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 367, 'character': 55}, 'start': {'line': 367, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 19}, 'start': {'line': 349, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 52 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:27:30,682 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n \\n\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n \\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-17 16:27:31,183 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:27:31,183 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:31,184 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:27:31,184 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:27:31,184 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:31,184 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:31,184 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:31,184 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:27:31,185 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:31,185 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:27:31,217 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:27:31,217 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:31,218 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:27:31,219 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 66}, 'start': {'line': 156, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 156, 'character': 132}, 'start': {'line': 156, 'character': 66}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:27:31,220 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 66}, 'start': {'line': 156, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 156, 'character': 132}, 'start': {'line': 156, 'character': 66}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:27:31,673 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n \\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n \\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":48}}}' 2018-02-17 16:27:32,175 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:27:32,175 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:32,176 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:27:32,209 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:27:32,209 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:32,209 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:27:32,209 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:27:32,209 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:32,209 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:32,210 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:32,210 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:27:32,210 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:32,210 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:27:32,211 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 66}, 'start': {'line': 156, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 156, 'character': 132}, 'start': {'line': 156, 'character': 66}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:27:32,211 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 66}, 'start': {'line': 156, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 156, 'character': 132}, 'start': {'line': 156, 'character': 66}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:27:54,011 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n \\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n \\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":49}}}' 2018-02-17 16:27:54,512 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:27:54,512 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:54,513 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:27:54,513 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:27:54,514 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:54,514 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:54,514 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:54,514 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:27:54,514 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:54,514 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:27:54,547 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:27:54,547 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:54,547 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:27:54,547 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:27:54,547 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:54,547 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:54,548 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:27:54,548 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:27:54,548 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:27:54,548 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:27:54,549 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 159, 'character': 66}, 'start': {'line': 159, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 159, 'character': 132}, 'start': {'line': 159, 'character': 66}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:27:54,549 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 159, 'character': 66}, 'start': {'line': 159, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 159, 'character': 132}, 'start': {'line': 159, 'character': 66}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:28:11,834 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n \\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-17 16:28:12,336 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:28:12,336 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:12,336 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:28:12,336 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:28:12,337 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:12,337 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:12,337 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:12,337 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:28:12,337 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:12,337 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:28:12,394 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:12,395 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:28:12,397 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 338, 'character': 93}, 'start': {'line': 338, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 338, 'character': 186}, 'start': {'line': 338, 'character': 93}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:28:12,397 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 338, 'character': 93}, 'start': {'line': 338, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 338, 'character': 186}, 'start': {'line': 338, 'character': 93}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:28:17,760 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n \\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-17 16:28:17,766 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-17 16:28:18,274 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:28:18,275 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:18,275 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:28:18,275 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:28:18,275 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:18,275 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:18,276 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:18,276 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:28:18,276 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:18,276 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:28:18,406 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:28:18,407 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:18,407 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:28:18,407 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:28:18,407 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:18,407 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:18,408 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:28:18,408 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:28:18,408 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:28:18,408 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:28:18,412 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 338, 'character': 93}, 'start': {'line': 338, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 338, 'character': 186}, 'start': {'line': 338, 'character': 93}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:28:18,412 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 338, 'character': 93}, 'start': {'line': 338, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 338, 'character': 186}, 'start': {'line': 338, 'character': 93}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:29:10,729 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words B\xc5\xafh (God), duch (spirit),\\n slovo (word) and pravda (truth) (e.g., Mt 1:23) -->\\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":52}}}' 2018-02-17 16:29:11,230 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:11,231 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:29:11,232 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:11,232 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:29:11,289 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:29:11,289 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:11,289 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:11,290 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:29:11,292 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 338, 'character': 96}, 'start': {'line': 338, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (95 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 339, 'character': 59}, 'start': {'line': 339, 'character': 7}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 339, 'character': 118}, 'start': {'line': 339, 'character': 59}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:29:11,292 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 338, 'character': 96}, 'start': {'line': 338, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (95 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 339, 'character': 59}, 'start': {'line': 339, 'character': 7}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 339, 'character': 118}, 'start': {'line': 339, 'character': 59}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:29:25,499 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n \\n \\n strong:G3588\\n robinson:T-DSM\\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":53}}}' 2018-02-17 16:29:26,000 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:29:26,000 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:26,001 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:29:26,001 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:29:26,001 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:26,001 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:26,001 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:26,001 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:29:26,002 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:26,002 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:29:26,060 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:29:26,060 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:26,061 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:29:26,063 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 344, 'character': 30}, 'start': {'line': 344, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 344, 'character': 60}, 'start': {'line': 344, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:29:26,063 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 344, 'character': 30}, 'start': {'line': 344, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 344, 'character': 60}, 'start': {'line': 344, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:29:48,810 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'\'})\\n\\n \\n \\n strong:G3588\\n \\n \\n \\n \\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":54}}}' 2018-02-17 16:29:49,312 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:29:49,312 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:49,312 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:29:49,312 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:29:49,313 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:49,313 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:49,313 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:49,313 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:29:49,313 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:49,313 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:29:49,372 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:29:49,372 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:49,372 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:29:49,372 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:29:49,372 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:49,373 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:49,373 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:29:49,373 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:29:49,373 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:29:49,373 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:29:49,375 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 30}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 345, 'character': 60}, 'start': {'line': 345, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:29:49,375 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 30}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 345, 'character': 60}, 'start': {'line': 345, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:30:21,079 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":55}}}' 2018-02-17 16:30:21,081 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":55}}}' 2018-02-17 16:30:21,582 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:30:21,582 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:30:21,582 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:30:21,582 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:30:21,582 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:30:21,583 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:30:21,583 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:30:21,583 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:30:21,583 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:30:21,583 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:30:21,689 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:30:21,690 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:30:21,691 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:30:21,691 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:30:21,692 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:30:21,693 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:31:29,107 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":56}}}' 2018-02-17 16:31:29,608 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:31:29,608 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:29,609 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:29,673 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:31:29,674 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:29,674 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:31:29,675 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:31:29,676 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:31:34,858 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n pass\\n \'lemma\': \'strong:G3588\'})\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":57}}}' 2018-02-17 16:31:35,359 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:31:35,359 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:35,359 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:35,360 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:31:35,418 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:35,419 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:31:35,420 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:31:35,420 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:31:36,555 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n \\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":58}}}' 2018-02-17 16:31:36,557 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":58}}}' 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:37,058 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:37,059 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:31:37,059 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:37,059 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:31:37,123 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:31:37,123 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:37,123 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:31:37,123 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:31:37,124 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:37,124 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:37,124 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:31:37,124 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:31:37,124 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:31:37,124 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:31:37,126 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:31:37,126 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 68}, 'start': {'line': 345, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 345, 'character': 136}, 'start': {'line': 345, 'character': 68}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:32:05,259 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29) -->\\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":59}}}' 2018-02-17 16:32:05,760 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:32:05,761 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:05,761 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:05,761 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:05,761 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:05,761 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:05,762 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:05,762 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:05,762 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:05,762 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:32:05,832 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:05,833 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:05,834 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:32:05,835 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 30}, 'start': {'line': 346, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 346, 'character': 60}, 'start': {'line': 346, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:32:05,835 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 30}, 'start': {'line': 346, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 346, 'character': 60}, 'start': {'line': 346, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:32:18,507 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":60}}}' 2018-02-17 16:32:19,008 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:32:19,008 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:19,009 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:19,009 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:19,009 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:19,009 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:19,009 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:19,009 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:19,010 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:19,010 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:32:19,068 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:19,069 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:32:19,071 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 30}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 349, 'character': 60}, 'start': {'line': 349, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:32:19,071 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 30}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 349, 'character': 60}, 'start': {'line': 349, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:32:36,155 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n \\n \\n strong:G4983\\n \\n \\n \\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":61}}}' 2018-02-17 16:32:36,656 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:32:36,657 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:36,657 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:36,657 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:36,657 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:36,657 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:36,658 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:36,658 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:36,658 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:36,658 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:32:36,721 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:32:36,721 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:36,721 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:36,721 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:36,721 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:36,721 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:36,722 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:36,722 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:36,722 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:36,722 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:32:36,724 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 348, 'character': 30}, 'start': {'line': 348, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 348, 'character': 60}, 'start': {'line': 348, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:32:36,724 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 348, 'character': 30}, 'start': {'line': 348, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 348, 'character': 60}, 'start': {'line': 348, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:32:47,012 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name == \'clen\':\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":62}}}' 2018-02-17 16:32:47,022 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":62}}}' 2018-02-17 16:32:47,523 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:32:47,524 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:47,524 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:47,524 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:47,524 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:47,524 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:47,525 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:47,525 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:47,525 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:47,525 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:32:47,655 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:32:47,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:47,655 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:32:47,656 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:32:47,656 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:47,656 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:47,656 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:32:47,657 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:32:47,657 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:32:47,657 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:32:47,660 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 69}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 349, 'character': 138}, 'start': {'line': 349, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:32:47,661 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 69}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 349, 'character': 138}, 'start': {'line': 349, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:33:10,156 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":63}}}' 2018-02-17 16:33:10,657 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:33:10,658 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:10,658 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:10,658 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:10,658 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:10,658 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:10,658 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:10,659 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:10,659 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:10,659 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:10,721 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:10,722 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:10,722 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:10,722 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:33:10,724 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 69}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 349, 'character': 138}, 'start': {'line': 349, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:33:10,724 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 69}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 349, 'character': 138}, 'start': {'line': 349, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:33:10,977 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":64}}}' 2018-02-17 16:33:10,979 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":64}}}' 2018-02-17 16:33:11,482 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:33:11,483 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:11,483 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:11,483 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:11,483 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:11,483 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:11,484 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:11,484 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:11,484 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:11,484 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:33:11,614 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:33:11,614 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:11,614 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:11,614 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:11,615 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:11,615 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:11,615 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:11,615 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:11,615 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:11,616 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:33:11,619 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 69}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 349, 'character': 138}, 'start': {'line': 349, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:33:11,619 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 349, 'character': 69}, 'start': {'line': 349, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 349, 'character': 138}, 'start': {'line': 349, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:33:29,674 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":65}}}' 2018-02-17 16:33:30,176 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:33:30,176 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:30,176 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:30,176 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:30,176 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:30,176 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:30,177 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:30,177 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:30,177 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:30,177 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:33:30,236 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:33:30,236 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:30,236 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:30,236 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:30,237 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:30,237 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:30,237 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:30,237 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:30,237 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:30,237 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:33:30,239 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 69}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 353, 'character': 138}, 'start': {'line': 353, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:33:30,239 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 69}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 353, 'character': 138}, 'start': {'line': 353, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:33:39,994 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n \\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":66}}}' 2018-02-17 16:33:40,496 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:33:40,496 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:40,496 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:40,496 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:40,496 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:40,496 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:40,497 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:40,497 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:40,497 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:40,497 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:33:40,556 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:33:40,556 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:40,556 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:40,556 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:40,557 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:40,557 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:40,557 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:40,557 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:40,557 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:40,557 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:33:40,559 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 69}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 353, 'character': 138}, 'start': {'line': 353, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:33:40,559 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 69}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 353, 'character': 138}, 'start': {'line': 353, 'character': 69}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:33:47,873 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":67}}}' 2018-02-17 16:33:48,375 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:33:48,375 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:48,375 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:48,375 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:48,375 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:48,375 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:48,376 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:48,376 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:48,376 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:48,376 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:48,436 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:48,437 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:48,437 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:48,437 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:33:48,438 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 30}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 353, 'character': 60}, 'start': {'line': 353, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:33:48,438 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 30}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 353, 'character': 60}, 'start': {'line': 353, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:33:56,211 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n \\n \\n strong:G4561\\n \\n \\n \\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":68}}}' 2018-02-17 16:33:56,712 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:56,713 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:56,781 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:33:56,782 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:33:56,782 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:33:56,782 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:33:56,784 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 30}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 353, 'character': 60}, 'start': {'line': 353, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:33:56,784 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 30}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 353, 'character': 60}, 'start': {'line': 353, 'character': 30}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:34:00,714 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":69}}}' 2018-02-17 16:34:00,716 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":69}}}' 2018-02-17 16:34:01,218 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:34:01,219 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:01,219 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:01,219 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:01,219 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:01,219 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:01,220 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:01,220 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:01,220 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:01,220 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:34:01,353 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:34:01,354 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:01,354 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:01,354 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:01,354 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:01,355 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:01,355 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:01,355 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:01,355 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:01,355 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:34:01,359 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 48}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 353, 'character': 96}, 'start': {'line': 353, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:34:01,359 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 48}, 'start': {'line': 353, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 353, 'character': 96}, 'start': {'line': 353, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:34:16,339 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":70}}}' 2018-02-17 16:34:16,840 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:34:16,840 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:16,841 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:34:16,909 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:16,910 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:34:16,912 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:34:16,912 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:34:34,306 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":71}}}' 2018-02-17 16:34:34,808 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:34:34,808 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:34,808 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:34,808 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:34,808 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:34,809 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:34,809 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:34,809 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:34,809 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:34,809 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:34:34,881 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:34:34,881 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:34,881 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:34,881 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:34,882 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:34,882 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:34,882 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:34,882 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:34,882 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:34,882 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:34:34,885 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:34:34,885 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:34:39,658 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4\'})\\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":72}}}' 2018-02-17 16:34:40,159 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:40,160 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:40,161 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:40,161 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:40,221 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:40,222 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:34:40,223 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:34:40,223 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:34:48,651 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n \\n \\n \\n strong:G4487\\n \\n \\n \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":73}}}' 2018-02-17 16:34:49,153 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:34:49,153 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:49,153 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:49,153 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:49,153 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:49,153 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:49,154 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:49,154 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:49,154 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:49,154 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:34:49,214 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:34:49,214 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:34:49,215 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:34:49,217 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:34:49,217 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 48}, 'start': {'line': 357, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 357, 'character': 96}, 'start': {'line': 357, 'character': 48}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:34:59,893 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":74}}}' 2018-02-17 16:35:00,394 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:35:00,394 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:00,395 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:35:00,395 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:35:00,395 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:00,395 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:00,395 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:00,396 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:35:00,396 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:00,396 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:35:00,627 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 371, 'character': 19}, 'start': {'line': 371, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:35:00,627 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:00,628 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:35:00,628 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:35:00,628 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:00,628 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:00,628 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:00,629 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:35:00,629 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:00,629 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:35:00,655 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 55}, 'start': {'line': 395, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 371, 'character': 19}, 'start': {'line': 371, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 57 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:35:00,656 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 55}, 'start': {'line': 395, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 371, 'character': 19}, 'start': {'line': 371, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 57 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:35:22,275 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":75}}}' 2018-02-17 16:35:22,282 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":75}}}' 2018-02-17 16:35:22,785 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:35:22,786 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:22,786 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:35:22,786 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:35:22,786 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:22,786 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:22,787 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:22,787 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:35:22,787 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:22,787 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:35:22,983 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 371, 'character': 19}, 'start': {'line': 371, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:35:22,984 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:35:22,985 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:35:23,000 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 55}, 'start': {'line': 395, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 371, 'character': 19}, 'start': {'line': 371, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 57 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:35:23,000 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 55}, 'start': {'line': 395, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 371, 'character': 19}, 'start': {'line': 371, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 57 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:37:08,259 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":76}}}' 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:08,761 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:08,762 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:08,762 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:08,762 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:37:08,888 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 19}, 'start': {'line': 374, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:37:08,889 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:08,889 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:08,889 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:08,889 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:08,889 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:08,889 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:08,890 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:08,890 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:08,890 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:37:08,906 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 55}, 'start': {'line': 398, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 19}, 'start': {'line': 374, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:37:08,906 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 82}, 'start': {'line': 140, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 55}, 'start': {'line': 398, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 19}, 'start': {'line': 374, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 117, 'character': 28}, 'start': {'line': 117, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:37:25,186 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":77}}}' 2018-02-17 16:37:25,687 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:37:25,687 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:25,688 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:25,688 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:25,688 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:25,688 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:25,688 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:25,688 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:25,689 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:25,689 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:37:25,805 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:25,806 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:37:25,831 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 55}, 'start': {'line': 399, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:37:25,831 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 55}, 'start': {'line': 399, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:37:25,887 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":78}}}' 2018-02-17 16:37:25,889 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":78}}}' 2018-02-17 16:37:26,390 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:37:26,390 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:26,391 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:26,391 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:26,391 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:26,391 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:26,392 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:26,392 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:26,392 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:26,392 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:37:26,636 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:37:26,637 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:26,637 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:26,637 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:26,637 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:26,638 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:26,638 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:26,638 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:26,638 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:26,638 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:37:26,667 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 55}, 'start': {'line': 399, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:37:26,667 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 55}, 'start': {'line': 399, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:37:57,883 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":79}}}' 2018-02-17 16:37:58,385 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:37:58,385 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:58,385 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:58,385 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:58,385 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:58,385 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:58,386 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:58,386 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:58,386 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:58,386 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:37:58,503 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:37:58,504 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:37:58,505 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:37:58,520 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 55}, 'start': {'line': 402, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:37:58,520 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 55}, 'start': {'line': 402, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:38:02,371 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":80}}}' 2018-02-17 16:38:02,873 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:38:02,873 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:02,873 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:02,874 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:38:02,995 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:02,996 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:38:03,034 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 55}, 'start': {'line': 402, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:38:03,034 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 55}, 'start': {'line': 402, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:38:11,842 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":81}}}' 2018-02-17 16:38:12,343 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:38:12,344 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:12,344 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:12,344 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:12,344 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:12,344 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:12,345 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:12,345 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:12,345 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:12,345 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:38:12,454 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:12,455 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:12,456 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:12,456 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:38:12,469 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:38:12,469 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:38:12,599 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":82}}}' 2018-02-17 16:38:12,601 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":82}}}' 2018-02-17 16:38:13,102 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:38:13,102 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:13,102 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:13,102 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:13,102 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:13,103 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:13,103 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:13,103 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:13,103 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:13,104 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:38:13,351 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:38:13,351 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:13,352 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:13,352 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:13,352 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:13,352 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:13,353 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:13,353 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:13,353 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:13,353 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:38:13,383 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:38:13,384 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:38:16,147 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":83}}}' 2018-02-17 16:38:16,649 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:38:16,649 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:16,649 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:16,649 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:16,649 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:16,650 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:16,650 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:16,650 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:16,650 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:16,650 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:38:16,775 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:16,776 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:16,777 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:38:16,803 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:38:16,804 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:38:16,838 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":84}}}' 2018-02-17 16:38:16,842 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":84}}}' 2018-02-17 16:38:17,347 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:38:17,348 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:17,348 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:17,348 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:17,348 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:17,349 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:17,349 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:17,349 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:17,349 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:17,350 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:38:17,595 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:38:17,595 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:17,596 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:38:17,596 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:38:17,596 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:17,596 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:17,596 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:38:17,597 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:38:17,597 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:38:17,597 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:38:17,626 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:38:17,627 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 55}, 'start': {'line': 403, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 375, 'character': 19}, 'start': {'line': 375, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 58 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:41:06,517 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n the (Hebrew) expression in the Old Testament -->\\n \\n @\\n \\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":85}}}' 2018-02-17 16:41:07,019 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:41:07,019 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:07,019 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:07,019 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:07,020 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:07,020 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:07,020 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:07,020 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:07,020 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:07,020 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:41:07,074 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:41:07,074 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:07,074 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:07,074 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:07,074 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:07,075 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:07,075 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:07,075 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:07,075 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:07,075 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:41:07,077 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 316, 'character': 51}, 'start': {'line': 316, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 316, 'character': 102}, 'start': {'line': 316, 'character': 51}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:41:07,077 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 316, 'character': 51}, 'start': {'line': 316, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 316, 'character': 102}, 'start': {'line': 316, 'character': 51}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:41:16,932 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \\n @\\n \\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":86}}}' 2018-02-17 16:41:17,433 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:41:17,433 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:17,433 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:17,434 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:41:17,489 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:41:17,489 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:17,489 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:17,489 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:17,489 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:17,490 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:17,490 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:17,490 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:17,490 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:17,490 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:41:17,492 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 317, 'character': 31}, 'start': {'line': 317, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 317, 'character': 62}, 'start': {'line': 317, 'character': 31}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:41:17,492 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 317, 'character': 31}, 'start': {'line': 317, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 317, 'character': 62}, 'start': {'line': 317, 'character': 31}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:41:34,997 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n \\n @\\n \\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":87}}}' 2018-02-17 16:41:35,498 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:41:35,499 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:35,499 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:35,499 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:35,499 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:35,499 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:35,500 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:35,500 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:35,500 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:35,500 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:41:35,556 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:41:35,556 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:35,556 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:35,556 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:35,557 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:35,557 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:35,557 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:35,557 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:35,557 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:35,557 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:41:35,559 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 319, 'character': 31}, 'start': {'line': 319, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 317, 'character': 34}, 'start': {'line': 317, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:41:35,559 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 319, 'character': 31}, 'start': {'line': 319, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 317, 'character': 34}, 'start': {'line': 317, 'character': 8}}, 'severity': 1, 'message': 'invalid syntax', 'source': 'pyflakes'}]} 2018-02-17 16:41:40,485 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":88}}}' 2018-02-17 16:41:40,487 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":88}}}' 2018-02-17 16:41:40,992 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:41:40,993 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:40,993 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:40,993 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:40,993 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:40,993 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:40,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:40,994 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:40,994 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:40,994 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:41:41,122 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 19}, 'start': {'line': 380, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:41:41,123 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:41:41,124 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:41:41,124 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:41:41,139 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 55}, 'start': {'line': 408, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 19}, 'start': {'line': 380, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:41:41,139 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 55}, 'start': {'line': 408, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 19}, 'start': {'line': 380, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:42:37,715 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n study\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n crossReference\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n italic\\n \\n \\n \\n \\n \\n added\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n (\\n \\n \\n \\n )\\n \\n \\n \\n x-index\\n inline\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":89}}}' 2018-02-17 16:42:38,218 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:42:38,218 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:38,218 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:42:38,218 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:42:38,218 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:38,218 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:38,219 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:38,219 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:42:38,219 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:38,219 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:38,288 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:38,289 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:42:38,289 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:38,289 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:42:38,291 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 80}, 'start': {'line': 380, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 380, 'character': 160}, 'start': {'line': 380, 'character': 80}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:42:38,291 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 80}, 'start': {'line': 380, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 380, 'character': 160}, 'start': {'line': 380, 'character': 80}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:42:46,739 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n # \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n study\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n crossReference\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n italic\\n \\n \\n \\n \\n \\n added\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n (\\n \\n \\n \\n )\\n \\n \\n \\n x-index\\n inline\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":90}}}' 2018-02-17 16:42:47,240 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:42:47,240 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:47,240 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:42:47,241 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:42:47,241 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:47,241 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:47,241 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:47,241 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:42:47,242 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:47,242 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:42:47,373 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:42:47,373 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:47,374 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:42:47,374 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:42:47,374 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:47,374 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:47,374 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:47,375 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:42:47,375 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:47,375 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:42:47,378 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 35}, 'start': {'line': 381, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 381, 'character': 70}, 'start': {'line': 381, 'character': 35}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:42:47,378 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 35}, 'start': {'line': 381, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 381, 'character': 70}, 'start': {'line': 381, 'character': 35}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:42:47,880 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n # \\n # \\n\\n # \\n\\n # \\n # \\n # \\n #\\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # study\\n # \\n # \\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # crossReference\\n # \\n # \\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # italic\\n # \\n # \\n # \\n # \\n # \\n # added\\n # \\n # \\n # \\n # \\n # \\n #\\n # \\n # \\n # \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n (\\n \\n \\n \\n )\\n \\n \\n \\n x-index\\n inline\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":91}}}' 2018-02-17 16:42:47,883 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":91}}}' 2018-02-17 16:42:48,385 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:42:48,386 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:48,386 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:42:48,386 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:42:48,386 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:48,387 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:48,387 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:48,387 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:42:48,387 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:48,387 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:42:48,543 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:42:48,544 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:48,544 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:42:48,544 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:42:48,545 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:48,545 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:48,545 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:42:48,545 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:42:48,546 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:42:48,546 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:42:48,550 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 37}, 'start': {'line': 381, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 38}, 'start': {'line': 383, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 385, 'character': 60}, 'start': {'line': 385, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 386, 'character': 30}, 'start': {'line': 386, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 387, 'character': 20}, 'start': {'line': 387, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 4}, 'start': {'line': 388, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 59}, 'start': {'line': 389, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 30}, 'start': {'line': 390, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 391, 'character': 20}, 'start': {'line': 391, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 393, 'character': 35}, 'start': {'line': 393, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 33}, 'start': {'line': 394, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 396, 'character': 45}, 'start': {'line': 396, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 32}, 'start': {'line': 397, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 57}, 'start': {'line': 398, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 79}, 'start': {'line': 401, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 21}, 'start': {'line': 403, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 20}, 'start': {'line': 404, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 44}, 'start': {'line': 406, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 34}, 'start': {'line': 407, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 43}, 'start': {'line': 408, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 32}, 'start': {'line': 410, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 66}, 'start': {'line': 411, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 79}, 'start': {'line': 414, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 21}, 'start': {'line': 416, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 20}, 'start': {'line': 417, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 38}, 'start': {'line': 419, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 19}, 'start': {'line': 421, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 63}, 'start': {'line': 422, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 34}, 'start': {'line': 423, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 62}, 'start': {'line': 424, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 36}, 'start': {'line': 425, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 25}, 'start': {'line': 426, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 20}, 'start': {'line': 427, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 24}, 'start': {'line': 428, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 43}, 'start': {'line': 429, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 61}, 'start': {'line': 430, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 36}, 'start': {'line': 431, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 25}, 'start': {'line': 432, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 25}, 'start': {'line': 433, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 20}, 'start': {'line': 434, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 20}, 'start': {'line': 435, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 4}, 'start': {'line': 436, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 34}, 'start': {'line': 437, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 47}, 'start': {'line': 438, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 20}, 'start': {'line': 439, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 85}, 'start': {'line': 441, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 441, 'character': 170}, 'start': {'line': 441, 'character': 85}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:42:48,551 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 37}, 'start': {'line': 381, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 38}, 'start': {'line': 383, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 385, 'character': 60}, 'start': {'line': 385, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 386, 'character': 30}, 'start': {'line': 386, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 387, 'character': 20}, 'start': {'line': 387, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 4}, 'start': {'line': 388, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 59}, 'start': {'line': 389, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 30}, 'start': {'line': 390, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 391, 'character': 20}, 'start': {'line': 391, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 393, 'character': 35}, 'start': {'line': 393, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 33}, 'start': {'line': 394, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 396, 'character': 45}, 'start': {'line': 396, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 32}, 'start': {'line': 397, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 57}, 'start': {'line': 398, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 79}, 'start': {'line': 401, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 21}, 'start': {'line': 403, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 20}, 'start': {'line': 404, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 44}, 'start': {'line': 406, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 34}, 'start': {'line': 407, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 43}, 'start': {'line': 408, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 32}, 'start': {'line': 410, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 66}, 'start': {'line': 411, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 79}, 'start': {'line': 414, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 21}, 'start': {'line': 416, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 20}, 'start': {'line': 417, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 38}, 'start': {'line': 419, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 19}, 'start': {'line': 421, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 63}, 'start': {'line': 422, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 34}, 'start': {'line': 423, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 62}, 'start': {'line': 424, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 36}, 'start': {'line': 425, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 25}, 'start': {'line': 426, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 20}, 'start': {'line': 427, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 24}, 'start': {'line': 428, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 43}, 'start': {'line': 429, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 61}, 'start': {'line': 430, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 36}, 'start': {'line': 431, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 25}, 'start': {'line': 432, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 25}, 'start': {'line': 433, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 20}, 'start': {'line': 434, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 20}, 'start': {'line': 435, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 4}, 'start': {'line': 436, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 34}, 'start': {'line': 437, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 47}, 'start': {'line': 438, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 20}, 'start': {'line': 439, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 85}, 'start': {'line': 441, 'character': 2}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 441, 'character': 170}, 'start': {'line': 441, 'character': 85}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:43:11,050 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n # \\n # \\n\\n # \\n\\n # \\n # \\n # \\n #\\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # study\\n # \\n # \\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # crossReference\\n # \\n # \\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # italic\\n # \\n # \\n # \\n # \\n # \\n # added\\n # \\n # \\n # \\n # \\n # \\n #\\n # \\n # \\n # \\n\\n # \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n (\\n \\n \\n \\n )\\n \\n \\n \\n x-index\\n inline\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":92}}}' 2018-02-17 16:43:11,552 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:11,553 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:43:11,554 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:11,554 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:43:11,629 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 16:43:11,629 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:11,629 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:11,630 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:43:11,632 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 37}, 'start': {'line': 381, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 38}, 'start': {'line': 383, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 385, 'character': 60}, 'start': {'line': 385, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 386, 'character': 30}, 'start': {'line': 386, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 387, 'character': 20}, 'start': {'line': 387, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 4}, 'start': {'line': 388, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 59}, 'start': {'line': 389, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 30}, 'start': {'line': 390, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 391, 'character': 20}, 'start': {'line': 391, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 393, 'character': 35}, 'start': {'line': 393, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 33}, 'start': {'line': 394, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 396, 'character': 45}, 'start': {'line': 396, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 32}, 'start': {'line': 397, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 57}, 'start': {'line': 398, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 79}, 'start': {'line': 401, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 21}, 'start': {'line': 403, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 20}, 'start': {'line': 404, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 44}, 'start': {'line': 406, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 34}, 'start': {'line': 407, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 43}, 'start': {'line': 408, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 32}, 'start': {'line': 410, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 66}, 'start': {'line': 411, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 79}, 'start': {'line': 414, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 21}, 'start': {'line': 416, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 20}, 'start': {'line': 417, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 38}, 'start': {'line': 419, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 19}, 'start': {'line': 421, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 63}, 'start': {'line': 422, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 34}, 'start': {'line': 423, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 62}, 'start': {'line': 424, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 36}, 'start': {'line': 425, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 25}, 'start': {'line': 426, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 20}, 'start': {'line': 427, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 24}, 'start': {'line': 428, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 43}, 'start': {'line': 429, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 61}, 'start': {'line': 430, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 36}, 'start': {'line': 431, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 25}, 'start': {'line': 432, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 25}, 'start': {'line': 433, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 20}, 'start': {'line': 434, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 20}, 'start': {'line': 435, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 4}, 'start': {'line': 436, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 34}, 'start': {'line': 437, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 47}, 'start': {'line': 438, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 20}, 'start': {'line': 439, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 442, 'character': 63}, 'start': {'line': 442, 'character': 7}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 442, 'character': 126}, 'start': {'line': 442, 'character': 63}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]] [hook] 2018-02-17 16:43:11,633 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 37}, 'start': {'line': 381, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 38}, 'start': {'line': 383, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 385, 'character': 60}, 'start': {'line': 385, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 386, 'character': 30}, 'start': {'line': 386, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 387, 'character': 20}, 'start': {'line': 387, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 4}, 'start': {'line': 388, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 59}, 'start': {'line': 389, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 30}, 'start': {'line': 390, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 391, 'character': 20}, 'start': {'line': 391, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 393, 'character': 35}, 'start': {'line': 393, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 33}, 'start': {'line': 394, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 396, 'character': 45}, 'start': {'line': 396, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 32}, 'start': {'line': 397, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 57}, 'start': {'line': 398, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 79}, 'start': {'line': 401, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 21}, 'start': {'line': 403, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 20}, 'start': {'line': 404, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 44}, 'start': {'line': 406, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 34}, 'start': {'line': 407, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 43}, 'start': {'line': 408, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 32}, 'start': {'line': 410, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 66}, 'start': {'line': 411, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 79}, 'start': {'line': 414, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 21}, 'start': {'line': 416, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 20}, 'start': {'line': 417, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 38}, 'start': {'line': 419, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 19}, 'start': {'line': 421, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 63}, 'start': {'line': 422, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 34}, 'start': {'line': 423, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 62}, 'start': {'line': 424, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 36}, 'start': {'line': 425, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 25}, 'start': {'line': 426, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 20}, 'start': {'line': 427, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 24}, 'start': {'line': 428, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 43}, 'start': {'line': 429, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 61}, 'start': {'line': 430, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 36}, 'start': {'line': 431, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 25}, 'start': {'line': 432, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 25}, 'start': {'line': 433, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 20}, 'start': {'line': 434, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 20}, 'start': {'line': 435, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 4}, 'start': {'line': 436, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 34}, 'start': {'line': 437, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 47}, 'start': {'line': 438, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 20}, 'start': {'line': 439, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 442, 'character': 63}, 'start': {'line': 442, 'character': 7}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 442, 'character': 126}, 'start': {'line': 442, 'character': 63}}, 'severity': 1, 'message': 'unindent does not match any outer indentation level', 'source': 'pyflakes'}]} 2018-02-17 16:43:12,166 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n # \\n # \\n\\n # \\n\\n # \\n # \\n # \\n #\\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # study\\n # \\n # \\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # crossReference\\n # \\n # \\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # italic\\n # \\n # \\n # \\n # \\n # \\n # added\\n # \\n # \\n # \\n # \\n # \\n #\\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n\\n # \\n # \\n # \\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # (\\n # \\n # \\n # \\n # )\\n # \\n # \\n # \\n # x-index\\n # inline\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":93}}}' 2018-02-17 16:43:12,168 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":93}}}' 2018-02-17 16:43:12,669 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:43:12,669 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:12,669 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:43:12,669 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:43:12,669 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:12,670 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:12,670 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:12,670 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:43:12,670 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:12,670 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:43:12,916 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 19}, 'start': {'line': 484, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:43:12,917 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:12,917 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:43:12,917 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:43:12,917 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:12,917 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:12,918 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:12,918 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:43:12,918 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:12,918 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:43:12,946 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 37}, 'start': {'line': 381, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 38}, 'start': {'line': 383, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 385, 'character': 60}, 'start': {'line': 385, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 386, 'character': 30}, 'start': {'line': 386, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 387, 'character': 20}, 'start': {'line': 387, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 4}, 'start': {'line': 388, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 59}, 'start': {'line': 389, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 30}, 'start': {'line': 390, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 391, 'character': 20}, 'start': {'line': 391, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 393, 'character': 35}, 'start': {'line': 393, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 33}, 'start': {'line': 394, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 396, 'character': 45}, 'start': {'line': 396, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 32}, 'start': {'line': 397, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 57}, 'start': {'line': 398, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 79}, 'start': {'line': 401, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 21}, 'start': {'line': 403, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 20}, 'start': {'line': 404, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 44}, 'start': {'line': 406, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 34}, 'start': {'line': 407, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 43}, 'start': {'line': 408, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 32}, 'start': {'line': 410, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 66}, 'start': {'line': 411, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 79}, 'start': {'line': 414, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 21}, 'start': {'line': 416, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 20}, 'start': {'line': 417, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 38}, 'start': {'line': 419, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 19}, 'start': {'line': 421, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 63}, 'start': {'line': 422, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 34}, 'start': {'line': 423, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 62}, 'start': {'line': 424, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 36}, 'start': {'line': 425, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 25}, 'start': {'line': 426, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 20}, 'start': {'line': 427, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 24}, 'start': {'line': 428, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 43}, 'start': {'line': 429, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 61}, 'start': {'line': 430, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 36}, 'start': {'line': 431, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 25}, 'start': {'line': 432, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 25}, 'start': {'line': 433, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 20}, 'start': {'line': 434, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 20}, 'start': {'line': 435, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 4}, 'start': {'line': 436, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 34}, 'start': {'line': 437, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 47}, 'start': {'line': 438, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 20}, 'start': {'line': 439, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 442, 'character': 65}, 'start': {'line': 442, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 35}, 'start': {'line': 443, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 444, 'character': 47}, 'start': {'line': 444, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 20}, 'start': {'line': 445, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 447, 'character': 33}, 'start': {'line': 447, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 448, 'character': 30}, 'start': {'line': 448, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 20}, 'start': {'line': 449, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 80}, 'start': {'line': 451, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 452, 'character': 34}, 'start': {'line': 452, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 453, 'character': 33}, 'start': {'line': 453, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 454, 'character': 34}, 'start': {'line': 454, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 46}, 'start': {'line': 455, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 456, 'character': 22}, 'start': {'line': 456, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 457, 'character': 46}, 'start': {'line': 457, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 19}, 'start': {'line': 458, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 459, 'character': 56}, 'start': {'line': 459, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 460, 'character': 33}, 'start': {'line': 460, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 461, 'character': 45}, 'start': {'line': 461, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 462, 'character': 53}, 'start': {'line': 462, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 463, 'character': 31}, 'start': {'line': 463, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 464, 'character': 33}, 'start': {'line': 464, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 465, 'character': 20}, 'start': {'line': 465, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 466, 'character': 24}, 'start': {'line': 466, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 467, 'character': 36}, 'start': {'line': 467, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 468, 'character': 63}, 'start': {'line': 468, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 469, 'character': 67}, 'start': {'line': 469, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 470, 'character': 56}, 'start': {'line': 470, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 471, 'character': 49}, 'start': {'line': 471, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 472, 'character': 55}, 'start': {'line': 472, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 65}, 'start': {'line': 473, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 474, 'character': 50}, 'start': {'line': 474, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 475, 'character': 47}, 'start': {'line': 475, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 476, 'character': 47}, 'start': {'line': 476, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 477, 'character': 55}, 'start': {'line': 477, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 478, 'character': 33}, 'start': {'line': 478, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 25}, 'start': {'line': 479, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 480, 'character': 25}, 'start': {'line': 480, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 481, 'character': 20}, 'start': {'line': 481, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 482, 'character': 20}, 'start': {'line': 482, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 512, 'character': 55}, 'start': {'line': 512, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 19}, 'start': {'line': 484, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:43:12,946 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 380, 'character': 82}, 'start': {'line': 380, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 381, 'character': 37}, 'start': {'line': 381, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 38}, 'start': {'line': 383, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 385, 'character': 60}, 'start': {'line': 385, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 386, 'character': 30}, 'start': {'line': 386, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 387, 'character': 20}, 'start': {'line': 387, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 4}, 'start': {'line': 388, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 59}, 'start': {'line': 389, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 30}, 'start': {'line': 390, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 391, 'character': 20}, 'start': {'line': 391, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 393, 'character': 35}, 'start': {'line': 393, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 33}, 'start': {'line': 394, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 87}, 'start': {'line': 395, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 396, 'character': 45}, 'start': {'line': 396, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 32}, 'start': {'line': 397, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 57}, 'start': {'line': 398, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 87}, 'start': {'line': 399, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 101}, 'start': {'line': 400, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 79}, 'start': {'line': 401, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 82}, 'start': {'line': 402, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 21}, 'start': {'line': 403, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 20}, 'start': {'line': 404, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 44}, 'start': {'line': 406, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 34}, 'start': {'line': 407, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 43}, 'start': {'line': 408, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 87}, 'start': {'line': 409, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 32}, 'start': {'line': 410, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 66}, 'start': {'line': 411, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 87}, 'start': {'line': 412, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (100 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 101}, 'start': {'line': 413, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 79}, 'start': {'line': 414, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 83}, 'start': {'line': 415, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 21}, 'start': {'line': 416, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 20}, 'start': {'line': 417, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 38}, 'start': {'line': 419, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 92}, 'start': {'line': 420, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 19}, 'start': {'line': 421, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 63}, 'start': {'line': 422, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 34}, 'start': {'line': 423, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 62}, 'start': {'line': 424, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 36}, 'start': {'line': 425, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 25}, 'start': {'line': 426, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 20}, 'start': {'line': 427, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 24}, 'start': {'line': 428, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 43}, 'start': {'line': 429, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 61}, 'start': {'line': 430, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 36}, 'start': {'line': 431, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 25}, 'start': {'line': 432, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 25}, 'start': {'line': 433, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 20}, 'start': {'line': 434, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 20}, 'start': {'line': 435, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 4}, 'start': {'line': 436, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 34}, 'start': {'line': 437, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 47}, 'start': {'line': 438, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 20}, 'start': {'line': 439, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 87}, 'start': {'line': 441, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 442, 'character': 65}, 'start': {'line': 442, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 35}, 'start': {'line': 443, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 444, 'character': 47}, 'start': {'line': 444, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 20}, 'start': {'line': 445, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 447, 'character': 33}, 'start': {'line': 447, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 448, 'character': 30}, 'start': {'line': 448, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 20}, 'start': {'line': 449, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 80}, 'start': {'line': 451, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 452, 'character': 34}, 'start': {'line': 452, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 453, 'character': 33}, 'start': {'line': 453, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 454, 'character': 34}, 'start': {'line': 454, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 46}, 'start': {'line': 455, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 456, 'character': 22}, 'start': {'line': 456, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 457, 'character': 46}, 'start': {'line': 457, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 19}, 'start': {'line': 458, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 459, 'character': 56}, 'start': {'line': 459, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 460, 'character': 33}, 'start': {'line': 460, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 461, 'character': 45}, 'start': {'line': 461, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 462, 'character': 53}, 'start': {'line': 462, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 463, 'character': 31}, 'start': {'line': 463, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 464, 'character': 33}, 'start': {'line': 464, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 465, 'character': 20}, 'start': {'line': 465, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 466, 'character': 24}, 'start': {'line': 466, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 467, 'character': 36}, 'start': {'line': 467, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 468, 'character': 63}, 'start': {'line': 468, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 469, 'character': 67}, 'start': {'line': 469, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 470, 'character': 56}, 'start': {'line': 470, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 471, 'character': 49}, 'start': {'line': 471, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 472, 'character': 55}, 'start': {'line': 472, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 65}, 'start': {'line': 473, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 474, 'character': 50}, 'start': {'line': 474, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 475, 'character': 47}, 'start': {'line': 475, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 476, 'character': 47}, 'start': {'line': 476, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 477, 'character': 55}, 'start': {'line': 477, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 478, 'character': 33}, 'start': {'line': 478, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 25}, 'start': {'line': 479, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 480, 'character': 25}, 'start': {'line': 480, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 481, 'character': 20}, 'start': {'line': 481, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 482, 'character': 20}, 'start': {'line': 482, 'character': 2}}, 'code': 'E114', 'message': 'E114 indentation is not a multiple of four (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 512, 'character': 55}, 'start': {'line': 512, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 19}, 'start': {'line': 484, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 16:43:31,789 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":94}}}' 2018-02-17 16:43:31,792 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":94}}}' 2018-02-17 16:43:32,294 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 16:43:32,295 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:32,295 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:43:32,295 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:43:32,295 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:32,295 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:32,296 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:32,296 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:43:32,296 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:32,296 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 16:43:32,574 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 19}, 'start': {'line': 484, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 16:43:32,575 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:32,575 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 16:43:32,575 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 16:43:32,575 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:32,576 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:32,576 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 16:43:32,576 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 16:43:32,576 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 16:43:32,576 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 16:43:32,606 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 85}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 85}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 99}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 99}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 81}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 90}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 85}, 'start': {'line': 441, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 512, 'character': 55}, 'start': {'line': 512, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 19}, 'start': {'line': 484, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 16:43:32,607 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 141, 'character': 82}, 'start': {'line': 141, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 85}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 399, 'character': 85}, 'start': {'line': 399, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 99}, 'start': {'line': 400, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 99}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 81}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 90}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 85}, 'start': {'line': 441, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 512, 'character': 55}, 'start': {'line': 512, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 19}, 'start': {'line': 32, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 19}, 'start': {'line': 33, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 19}, 'start': {'line': 38, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 19}, 'start': {'line': 107, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 19}, 'start': {'line': 484, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 118, 'character': 28}, 'start': {'line': 118, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:00:32,708 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":95}}}' 2018-02-17 17:00:33,210 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:00:33,211 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:00:33,211 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:00:33,211 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:00:33,211 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:00:33,211 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:00:33,211 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:00:33,212 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:00:33,212 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:00:33,212 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:00:33,331 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 19}, 'start': {'line': 34, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 35, 'character': 19}, 'start': {'line': 35, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 87, 'character': 19}, 'start': {'line': 87, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 109, 'character': 19}, 'start': {'line': 109, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 19}, 'start': {'line': 486, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:00:33,331 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:00:33,332 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:00:33,346 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 35}, 'start': {'line': 34, 'character': 0}}, 'code': 'E303', 'message': 'E303 too many blank lines (4)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 82}, 'start': {'line': 143, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 85}, 'start': {'line': 397, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 85}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 85}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 99}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 81}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 90}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 85}, 'start': {'line': 443, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 514, 'character': 55}, 'start': {'line': 514, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 19}, 'start': {'line': 34, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 35, 'character': 19}, 'start': {'line': 35, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 87, 'character': 19}, 'start': {'line': 87, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 109, 'character': 19}, 'start': {'line': 109, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 19}, 'start': {'line': 486, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 120, 'character': 28}, 'start': {'line': 120, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:00:33,346 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 35}, 'start': {'line': 34, 'character': 0}}, 'code': 'E303', 'message': 'E303 too many blank lines (4)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 82}, 'start': {'line': 143, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 85}, 'start': {'line': 397, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 85}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 85}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 99}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 81}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 90}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 85}, 'start': {'line': 443, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 514, 'character': 55}, 'start': {'line': 514, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 19}, 'start': {'line': 34, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 35, 'character': 19}, 'start': {'line': 35, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 83, 'character': 19}, 'start': {'line': 83, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 87, 'character': 19}, 'start': {'line': 87, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 109, 'character': 19}, 'start': {'line': 109, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 19}, 'start': {'line': 486, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 120, 'character': 28}, 'start': {'line': 120, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:02:15,397 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading defpozn and defpozno we need to be collecting\\n # instead of \\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":96}}}' 2018-02-17 17:02:15,899 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:02:15,899 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:15,900 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:02:15,900 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:02:15,900 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:15,900 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:15,900 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:15,900 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:02:15,901 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:15,901 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:02:16,036 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 19}, 'start': {'line': 125, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 19}, 'start': {'line': 492, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:02:16,036 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:16,036 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:16,037 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:02:16,052 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 18}, 'start': {'line': 37, 'character': 16}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 149, 'character': 82}, 'start': {'line': 149, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 85}, 'start': {'line': 403, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 85}, 'start': {'line': 407, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 99}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 85}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 85}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 99}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 81}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 90}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 85}, 'start': {'line': 449, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 520, 'character': 55}, 'start': {'line': 520, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 19}, 'start': {'line': 125, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 19}, 'start': {'line': 492, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 126, 'character': 28}, 'start': {'line': 126, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:02:16,052 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 18}, 'start': {'line': 37, 'character': 16}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 149, 'character': 82}, 'start': {'line': 149, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 85}, 'start': {'line': 403, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 85}, 'start': {'line': 407, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 99}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 85}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 85}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 99}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 81}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 90}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 85}, 'start': {'line': 449, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 520, 'character': 55}, 'start': {'line': 520, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 19}, 'start': {'line': 125, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 19}, 'start': {'line': 492, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 126, 'character': 28}, 'start': {'line': 126, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:02:19,149 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno we need to be collecting\\n # instead of \\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":97}}}' 2018-02-17 17:02:19,651 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:02:19,651 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:19,652 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:02:19,652 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:02:19,652 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:19,652 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:19,652 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:19,652 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:02:19,653 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:19,653 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:02:19,796 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 19}, 'start': {'line': 125, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 19}, 'start': {'line': 492, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:02:19,796 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:19,796 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:02:19,796 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:02:19,797 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:19,797 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:19,797 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:19,797 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:02:19,797 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:19,797 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:02:19,846 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 18}, 'start': {'line': 37, 'character': 16}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 149, 'character': 82}, 'start': {'line': 149, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 85}, 'start': {'line': 403, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 85}, 'start': {'line': 407, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 99}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 85}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 85}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 99}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 81}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 90}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 85}, 'start': {'line': 449, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 520, 'character': 55}, 'start': {'line': 520, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 19}, 'start': {'line': 125, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 19}, 'start': {'line': 492, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 126, 'character': 28}, 'start': {'line': 126, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:02:19,846 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 18}, 'start': {'line': 37, 'character': 16}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 149, 'character': 82}, 'start': {'line': 149, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 85}, 'start': {'line': 403, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 85}, 'start': {'line': 407, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 99}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 85}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 85}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 99}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 81}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 90}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 85}, 'start': {'line': 449, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 520, 'character': 55}, 'start': {'line': 520, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 19}, 'start': {'line': 40, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 19}, 'start': {'line': 93, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 115, 'character': 19}, 'start': {'line': 115, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 19}, 'start': {'line': 125, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 19}, 'start': {'line': 492, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 126, 'character': 28}, 'start': {'line': 126, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:02:28,429 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to be\\n # collecting\\n # instead of \\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":98}}}' 2018-02-17 17:02:28,930 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:02:28,931 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:28,931 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:02:28,931 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:02:28,931 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:28,931 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:28,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:28,932 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:02:28,932 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:28,932 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:02:29,063 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:02:29,064 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:02:29,078 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 18}, 'start': {'line': 38, 'character': 16}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 82}, 'start': {'line': 150, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 85}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 99}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 85}, 'start': {'line': 418, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 85}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 99}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 81}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 90}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 85}, 'start': {'line': 450, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 521, 'character': 55}, 'start': {'line': 521, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 127, 'character': 28}, 'start': {'line': 127, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:02:29,079 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 38, 'character': 18}, 'start': {'line': 38, 'character': 16}}, 'code': 'W291', 'message': 'W291 trailing whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 82}, 'start': {'line': 150, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 85}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 99}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 85}, 'start': {'line': 418, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 85}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 99}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 81}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 90}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 85}, 'start': {'line': 450, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 521, 'character': 55}, 'start': {'line': 521, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 127, 'character': 28}, 'start': {'line': 127, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:06,172 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":99}}}' 2018-02-17 17:03:06,674 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:06,674 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:06,675 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:06,812 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:06,812 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:06,812 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:06,813 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:06,832 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 82}, 'start': {'line': 150, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 85}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 99}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 85}, 'start': {'line': 418, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 85}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 99}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 81}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 90}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 85}, 'start': {'line': 450, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 521, 'character': 55}, 'start': {'line': 521, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 127, 'character': 28}, 'start': {'line': 127, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:06,832 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 82}, 'start': {'line': 150, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 85}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 99}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 85}, 'start': {'line': 418, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 85}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 99}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 81}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 90}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 85}, 'start': {'line': 450, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 521, 'character': 55}, 'start': {'line': 521, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 127, 'character': 28}, 'start': {'line': 127, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:06,888 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":100}}}' 2018-02-17 17:03:06,890 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":100}}}' 2018-02-17 17:03:07,395 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:07,395 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:07,396 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:07,396 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:07,396 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:07,396 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:07,397 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:07,397 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:07,397 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:07,397 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:07,670 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:07,671 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:07,671 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:07,671 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:07,671 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:07,671 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:07,672 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:07,672 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:07,672 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:07,672 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:07,696 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 82}, 'start': {'line': 150, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 85}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 99}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 85}, 'start': {'line': 418, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 85}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 99}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 81}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 90}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 85}, 'start': {'line': 450, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 521, 'character': 55}, 'start': {'line': 521, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 127, 'character': 28}, 'start': {'line': 127, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:07,696 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 82}, 'start': {'line': 150, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 85}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 99}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 85}, 'start': {'line': 418, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 85}, 'start': {'line': 421, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 99}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 81}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 90}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 85}, 'start': {'line': 450, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 521, 'character': 55}, 'start': {'line': 521, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 19}, 'start': {'line': 41, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 94, 'character': 19}, 'start': {'line': 94, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 19}, 'start': {'line': 111, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 19}, 'start': {'line': 126, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 19}, 'start': {'line': 493, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 127, 'character': 28}, 'start': {'line': 127, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:17,350 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":101}}}' 2018-02-17 17:03:17,852 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:17,852 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:17,852 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:17,853 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:17,988 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 19}, 'start': {'line': 48, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 91, 'character': 19}, 'start': {'line': 91, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 112, 'character': 19}, 'start': {'line': 112, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 19}, 'start': {'line': 127, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 19}, 'start': {'line': 494, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:17,988 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:17,988 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:17,989 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:18,004 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 82}, 'start': {'line': 151, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 405, 'character': 85}, 'start': {'line': 405, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 99}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 85}, 'start': {'line': 419, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 85}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 99}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 81}, 'start': {'line': 425, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 90}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 85}, 'start': {'line': 451, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 55}, 'start': {'line': 522, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 19}, 'start': {'line': 48, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 91, 'character': 19}, 'start': {'line': 91, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 112, 'character': 19}, 'start': {'line': 112, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 19}, 'start': {'line': 127, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 19}, 'start': {'line': 494, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 128, 'character': 28}, 'start': {'line': 128, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:18,004 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 82}, 'start': {'line': 151, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 405, 'character': 85}, 'start': {'line': 405, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 99}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 85}, 'start': {'line': 419, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 85}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 99}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 81}, 'start': {'line': 425, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 90}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 85}, 'start': {'line': 451, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 55}, 'start': {'line': 522, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 19}, 'start': {'line': 48, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 91, 'character': 19}, 'start': {'line': 91, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 112, 'character': 19}, 'start': {'line': 112, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 19}, 'start': {'line': 127, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 19}, 'start': {'line': 494, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 128, 'character': 28}, 'start': {'line': 128, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:18,387 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":102}}}' 2018-02-17 17:03:18,389 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":102}}}' 2018-02-17 17:03:18,890 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:18,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:18,890 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:18,891 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:18,891 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:18,891 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:18,891 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:18,891 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:18,892 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:18,892 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:19,178 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 19}, 'start': {'line': 48, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 91, 'character': 19}, 'start': {'line': 91, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 112, 'character': 19}, 'start': {'line': 112, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 19}, 'start': {'line': 127, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 19}, 'start': {'line': 494, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:19,179 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:19,179 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:19,179 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:19,179 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:19,179 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:19,180 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:19,180 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:19,180 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:19,180 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:19,209 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 82}, 'start': {'line': 151, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 405, 'character': 85}, 'start': {'line': 405, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 99}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 85}, 'start': {'line': 419, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 85}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 99}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 81}, 'start': {'line': 425, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 90}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 85}, 'start': {'line': 451, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 55}, 'start': {'line': 522, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 19}, 'start': {'line': 48, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 91, 'character': 19}, 'start': {'line': 91, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 112, 'character': 19}, 'start': {'line': 112, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 19}, 'start': {'line': 127, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 19}, 'start': {'line': 494, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 128, 'character': 28}, 'start': {'line': 128, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:19,210 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 82}, 'start': {'line': 151, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 405, 'character': 85}, 'start': {'line': 405, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 99}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 85}, 'start': {'line': 419, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 85}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 99}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 81}, 'start': {'line': 425, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 90}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 85}, 'start': {'line': 451, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 55}, 'start': {'line': 522, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 42, 'character': 19}, 'start': {'line': 42, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 19}, 'start': {'line': 48, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 91, 'character': 19}, 'start': {'line': 91, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 112, 'character': 19}, 'start': {'line': 112, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 19}, 'start': {'line': 117, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 19}, 'start': {'line': 127, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 19}, 'start': {'line': 494, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 128, 'character': 28}, 'start': {'line': 128, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:33,751 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":103}}}' 2018-02-17 17:03:33,760 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":103}}}' 2018-02-17 17:03:34,262 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:34,263 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:34,263 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:34,263 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:34,263 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:34,264 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:34,264 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:34,264 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:34,264 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:34,265 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:34,545 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 44, 'character': 19}, 'start': {'line': 44, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 49, 'character': 19}, 'start': {'line': 49, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 19}, 'start': {'line': 113, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 128, 'character': 19}, 'start': {'line': 128, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 495, 'character': 19}, 'start': {'line': 495, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:34,546 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:34,546 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:34,546 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:34,546 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:34,547 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:34,547 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:34,547 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:34,547 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:34,547 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:34,579 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 152, 'character': 82}, 'start': {'line': 152, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 85}, 'start': {'line': 406, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 85}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 99}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 85}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 99}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 81}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 90}, 'start': {'line': 431, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 452, 'character': 85}, 'start': {'line': 452, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 523, 'character': 55}, 'start': {'line': 523, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 44, 'character': 19}, 'start': {'line': 44, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 49, 'character': 19}, 'start': {'line': 49, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 19}, 'start': {'line': 113, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 128, 'character': 19}, 'start': {'line': 128, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 495, 'character': 19}, 'start': {'line': 495, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 129, 'character': 28}, 'start': {'line': 129, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:34,580 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 36}, 'start': {'line': 15, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 152, 'character': 82}, 'start': {'line': 152, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 85}, 'start': {'line': 406, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 85}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 99}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 85}, 'start': {'line': 420, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 99}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 81}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 90}, 'start': {'line': 431, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 452, 'character': 85}, 'start': {'line': 452, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 523, 'character': 55}, 'start': {'line': 523, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 19}, 'start': {'line': 15, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 16, 'character': 19}, 'start': {'line': 16, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 19}, 'start': {'line': 20, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 28, 'character': 19}, 'start': {'line': 28, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 19}, 'start': {'line': 43, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 44, 'character': 19}, 'start': {'line': 44, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 49, 'character': 19}, 'start': {'line': 49, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 19}, 'start': {'line': 113, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 19}, 'start': {'line': 118, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 128, 'character': 19}, 'start': {'line': 128, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 495, 'character': 19}, 'start': {'line': 495, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 129, 'character': 28}, 'start': {'line': 129, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:46,693 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\n\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":104}}}' 2018-02-17 17:03:47,194 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:47,195 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:47,195 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:47,195 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:47,195 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:47,195 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:47,195 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:47,196 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:47,196 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:47,196 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:47,318 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:47,318 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:47,318 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:47,318 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:47,318 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:47,318 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:47,319 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:47,319 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:47,319 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:47,319 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:47,333 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 16, 'character': 72}, 'start': {'line': 16, 'character': 0}}, 'code': 'E303', 'message': 'E303 too many blank lines (3)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 85}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 99}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 99}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 81}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 90}, 'start': {'line': 434, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 85}, 'start': {'line': 455, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 55}, 'start': {'line': 526, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:47,334 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 16, 'character': 72}, 'start': {'line': 16, 'character': 0}}, 'code': 'E303', 'message': 'E303 too many blank lines (3)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 85}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 99}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 99}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 81}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 90}, 'start': {'line': 434, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 85}, 'start': {'line': 455, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 55}, 'start': {'line': 526, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:58,711 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":105}}}' 2018-02-17 17:03:59,212 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:03:59,212 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:59,212 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:59,213 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:03:59,348 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:03:59,348 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:59,349 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:03:59,349 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:03:59,349 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:59,349 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:59,349 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:03:59,349 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:03:59,350 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:03:59,350 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:03:59,366 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 85}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 99}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 99}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 81}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 90}, 'start': {'line': 434, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 85}, 'start': {'line': 455, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 55}, 'start': {'line': 526, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:03:59,366 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 85}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 99}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 99}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 81}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 90}, 'start': {'line': 434, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 85}, 'start': {'line': 455, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 55}, 'start': {'line': 526, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:03:59,731 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":106}}}' 2018-02-17 17:03:59,735 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":106}}}' 2018-02-17 17:04:00,243 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:04:00,244 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:00,244 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:04:00,244 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:04:00,244 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:00,244 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:00,245 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:00,245 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:04:00,245 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:00,245 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:04:00,528 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:04:00,529 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:00,529 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:04:00,529 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:04:00,529 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:00,529 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:00,530 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:00,530 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:04:00,530 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:00,530 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:04:00,560 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 85}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 99}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 99}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 81}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 90}, 'start': {'line': 434, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 85}, 'start': {'line': 455, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 55}, 'start': {'line': 526, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:04:00,560 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 85}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 85}, 'start': {'line': 413, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 99}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 85}, 'start': {'line': 423, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 99}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 81}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 90}, 'start': {'line': 434, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 85}, 'start': {'line': 455, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 55}, 'start': {'line': 526, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 19}, 'start': {'line': 498, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:04:13,502 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":107}}}' 2018-02-17 17:04:14,003 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:04:14,004 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:14,005 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:04:14,171 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 500, 'character': 19}, 'start': {'line': 500, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:04:14,171 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:14,172 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:04:14,188 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 29}, 'start': {'line': 191, 'character': 8}}, 'code': 'E303', 'message': 'E303 too many blank lines (3)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 85}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 85}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 99}, 'start': {'line': 416, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 85}, 'start': {'line': 425, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 85}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 99}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 81}, 'start': {'line': 431, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 90}, 'start': {'line': 436, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 457, 'character': 85}, 'start': {'line': 457, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 528, 'character': 55}, 'start': {'line': 528, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 500, 'character': 19}, 'start': {'line': 500, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:04:14,188 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 29}, 'start': {'line': 191, 'character': 8}}, 'code': 'E303', 'message': 'E303 too many blank lines (3)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 85}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 85}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 99}, 'start': {'line': 416, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 85}, 'start': {'line': 425, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 85}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 99}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 81}, 'start': {'line': 431, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 90}, 'start': {'line': 436, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 457, 'character': 85}, 'start': {'line': 457, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 528, 'character': 55}, 'start': {'line': 528, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 500, 'character': 19}, 'start': {'line': 500, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 59 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:04:36,295 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n elif name == \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\')\\n\\n elif name == \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\')\\n\\n elif name == \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\')\\n\\n elif name == \'krat\':\\n self.ds.characters(\'\xc3\x97\')\\n\\n elif name == \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n elif name == \'hzavorka\':\\n self.ds.characters(\'[\')\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n elif name == \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\')\\n\\n elif name == \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\')\\n\\n # some non-ASCII characters which are encoded as elements\\n elif name == \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\')\\n\\n elif name == \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\')\\n\\n elif name == \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\')\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n elif name == \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\')\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n elif name == \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\')\\n\\n elif name == \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\')\\n\\n elif name == \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\')\\n\\n elif name == \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\')\\n\\n elif name == \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\')\\n\\n elif name == \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\')\\n\\n elif name == \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\')\\n\\n elif name == \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\')\\n\\n elif name == \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\')\\n\\n elif name == \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\')\\n\\n elif name == \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\')\\n\\n elif name == \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\')\\n\\n elif name == \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\')\\n\\n elif name == \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\')\\n\\n elif name == \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\')\\n\\n elif name == \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\')\\n\\n elif name == \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\')\\n\\n elif name == \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\')\\n\\n # TODO that\'s zero, not o\\n elif name == \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\')\\n\\n # TODO that\'s p-dot not p-macron\\n elif name == \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\')\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n elif name == \\"retez\\":\\n self.ds.characters(\'*\')\\n\\n # large differences among various translations\\n elif name == \\"rozdily\\":\\n self.ds.characters(\'$\')\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n elif name == \\"vetsina\\":\\n self.ds.characters(\'&\')\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n elif name == \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\')\\n\\n # voln\xc4\x9bji\\n elif name == \\"tilde\\":\\n self.ds.characters(\'~\')\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n elif name == \\"shoda\\":\\n self.ds.characters(\'//\')\\n\\n elif name == \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\')\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n elif name == \'prvni\':\\n self.ds.characters(\'@\')\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":108}}}' 2018-02-17 17:04:36,797 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:04:36,797 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:36,797 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:04:36,797 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:04:36,798 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:36,798 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:36,798 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:36,798 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:04:36,799 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:36,799 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:04:36,992 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 19}, 'start': {'line': 501, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:04:36,992 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:36,992 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:04:36,992 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:04:36,992 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:36,993 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:36,993 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:04:36,993 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:04:36,993 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:04:36,993 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:04:37,039 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 85}, 'start': {'line': 416, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 99}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 85}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 99}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 81}, 'start': {'line': 432, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 90}, 'start': {'line': 437, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 85}, 'start': {'line': 458, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 529, 'character': 55}, 'start': {'line': 529, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 19}, 'start': {'line': 501, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 60 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:04:37,039 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 18, 'character': 36}, 'start': {'line': 18, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 82}, 'start': {'line': 155, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 85}, 'start': {'line': 416, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 99}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 85}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 99}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 81}, 'start': {'line': 432, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 90}, 'start': {'line': 437, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 85}, 'start': {'line': 458, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 529, 'character': 55}, 'start': {'line': 529, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 18, 'character': 19}, 'start': {'line': 18, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 19}, 'start': {'line': 19, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 31, 'character': 19}, 'start': {'line': 31, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 19}, 'start': {'line': 46, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 19}, 'start': {'line': 47, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 52, 'character': 19}, 'start': {'line': 52, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 19}, 'start': {'line': 95, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 19}, 'start': {'line': 99, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 19}, 'start': {'line': 108, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 19}, 'start': {'line': 116, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 19}, 'start': {'line': 122, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 19}, 'start': {'line': 131, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 19}, 'start': {'line': 501, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 132, 'character': 28}, 'start': {'line': 132, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 60 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:07:43,479 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {}\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'bczuv\':\\n self.ds.characters(\'\xe2\x80\x9e\',\\n\\n \'eczuv\':\\n self.ds.characters(\'\xe2\x80\x9c\',\\n\\n \'pomlcka\':\\n self.ds.characters(\'\xe2\x80\x94\',\\n\\n \'krat\':\\n self.ds.characters(\'\xc3\x97\',\\n\\n \'minus\':\\n self.ds.characters(\'\xe2\x80\x93\',\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\':\\n self.ds.characters(\'[\',\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n \\"bkzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x88\',\\n\\n \\"ekzavorka\\":\\n self.ds.characters(\'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\":\\n self.ds.characters(\'\xe2\x80\xa6\',\\n\\n \\"amacron\\":\\n self.ds.characters(\'\xc4\x81\',\\n\\n \\"omacron\\":\\n self.ds.characters(\'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n self.ds.characters(\'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n self.ds.characters(\'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n self.ds.characters(\'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n self.ds.characters(\'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n self.ds.characters(\'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n self.ds.characters(\'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n self.ds.characters(\'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n self.ds.characters(\'\xc3\xaa\',\\n\\n \\"emacron\\":\\n self.ds.characters(\'\xc4\x93\',\\n\\n \\"gmacron\\":\\n self.ds.characters(\'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n self.ds.characters(\'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n self.ds.characters(\'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n self.ds.characters(\'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n self.ds.characters(\'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n self.ds.characters(\'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n self.ds.characters(\'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n self.ds.characters(\'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n self.ds.characters(\'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n self.ds.characters(\'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n self.ds.characters(\'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n self.ds.characters(\'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n self.ds.characters(\'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n self.ds.characters(\'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n self.ds.characters(\'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n self.ds.characters(\'//\',\\n\\n \\"spojovnik\\":\\n self.ds.characters(\'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n self.ds.characters(\'@\',\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":109}}}' 2018-02-17 17:07:43,981 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:07:43,981 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:43,981 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:07:43,981 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:07:43,981 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:43,981 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:43,982 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:43,982 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:07:43,982 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:43,982 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:07:44,031 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 17:07:44,031 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:44,031 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:07:44,031 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:07:44,031 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:44,031 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:44,032 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:44,032 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:07:44,032 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:44,032 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:07:44,033 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 16, 'character': 46}, 'start': {'line': 16, 'character': 8}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 17, 'character': 17}, 'start': {'line': 17, 'character': 8}}, 'code': 'E113', 'message': 'E113 unexpected indentation', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 297, 'character': 82}, 'start': {'line': 297, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 85}, 'start': {'line': 416, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 99}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 85}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 99}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 81}, 'start': {'line': 432, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 90}, 'start': {'line': 437, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 85}, 'start': {'line': 458, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 530, 'character': 100}, 'start': {'line': 530, 'character': 0}}, 'code': 'E901', 'message': 'E901 TokenError: EOF in multi-line statement', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 529, 'character': 55}, 'start': {'line': 529, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 17}, 'start': {'line': 20, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 21, 'character': 36}, 'start': {'line': 21, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 24, 'character': 36}, 'start': {'line': 24, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 26, 'character': 16}, 'start': {'line': 26, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 36}, 'start': {'line': 27, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 29, 'character': 17}, 'start': {'line': 29, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 30, 'character': 36}, 'start': {'line': 30, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 68}, 'start': {'line': 32, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 54}, 'start': {'line': 33, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 20}, 'start': {'line': 34, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 35, 'character': 36}, 'start': {'line': 35, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 76}, 'start': {'line': 37, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 39, 'character': 50}, 'start': {'line': 39, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 21}, 'start': {'line': 40, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 36}, 'start': {'line': 41, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 21}, 'start': {'line': 43, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 44, 'character': 36}, 'start': {'line': 44, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 66}, 'start': {'line': 46, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 16}, 'start': {'line': 47, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 36}, 'start': {'line': 48, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 50, 'character': 19}, 'start': {'line': 50, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 51, 'character': 36}, 'start': {'line': 51, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 53, 'character': 19}, 'start': {'line': 53, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 54, 'character': 36}, 'start': {'line': 54, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 56, 'character': 60}, 'start': {'line': 56, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 57, 'character': 21}, 'start': {'line': 57, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 58, 'character': 36}, 'start': {'line': 58, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 60, 'character': 70}, 'start': {'line': 60, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 61, 'character': 66}, 'start': {'line': 61, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 62, 'character': 21}, 'start': {'line': 62, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 63, 'character': 36}, 'start': {'line': 63, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 65, 'character': 21}, 'start': {'line': 65, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 66, 'character': 36}, 'start': {'line': 66, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 68, 'character': 21}, 'start': {'line': 68, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 69, 'character': 36}, 'start': {'line': 69, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 71, 'character': 22}, 'start': {'line': 71, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 72, 'character': 36}, 'start': {'line': 72, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 74, 'character': 23}, 'start': {'line': 74, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 75, 'character': 36}, 'start': {'line': 75, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 24}, 'start': {'line': 77, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 78, 'character': 36}, 'start': {'line': 78, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 25}, 'start': {'line': 80, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 36}, 'start': {'line': 81, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 83, 'character': 23}, 'start': {'line': 83, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 36}, 'start': {'line': 84, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 86, 'character': 19}, 'start': {'line': 86, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 87, 'character': 36}, 'start': {'line': 87, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 36}, 'start': {'line': 90, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 92, 'character': 23}, 'start': {'line': 92, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 36}, 'start': {'line': 93, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 24}, 'start': {'line': 95, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 36}, 'start': {'line': 96, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 98, 'character': 18}, 'start': {'line': 98, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 36}, 'start': {'line': 99, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 21}, 'start': {'line': 101, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 36}, 'start': {'line': 102, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 21}, 'start': {'line': 104, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 36}, 'start': {'line': 105, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 24}, 'start': {'line': 107, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 36}, 'start': {'line': 108, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 23}, 'start': {'line': 110, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 36}, 'start': {'line': 111, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 23}, 'start': {'line': 113, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 114, 'character': 36}, 'start': {'line': 114, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 34}, 'start': {'line': 116, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 21}, 'start': {'line': 117, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 36}, 'start': {'line': 118, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 120, 'character': 42}, 'start': {'line': 120, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 36}, 'start': {'line': 122, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 124, 'character': 68}, 'start': {'line': 124, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 70}, 'start': {'line': 125, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 17}, 'start': {'line': 126, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 36}, 'start': {'line': 127, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 129, 'character': 55}, 'start': {'line': 129, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 130, 'character': 19}, 'start': {'line': 130, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 36}, 'start': {'line': 131, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 70}, 'start': {'line': 133, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 134, 'character': 19}, 'start': {'line': 134, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 135, 'character': 40}, 'start': {'line': 135, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 63}, 'start': {'line': 137, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 28}, 'start': {'line': 138, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 17}, 'start': {'line': 139, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 36}, 'start': {'line': 140, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 142, 'character': 18}, 'start': {'line': 142, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 17}, 'start': {'line': 143, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 144, 'character': 36}, 'start': {'line': 144, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 146, 'character': 62}, 'start': {'line': 146, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 147, 'character': 17}, 'start': {'line': 147, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 148, 'character': 37}, 'start': {'line': 148, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 21}, 'start': {'line': 150, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 36}, 'start': {'line': 151, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 73}, 'start': {'line': 153, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 154, 'character': 55}, 'start': {'line': 154, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 17}, 'start': {'line': 155, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 36}, 'start': {'line': 156, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 0}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 36}, 'start': {'line': 160, 'character': 0}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 35}, 'start': {'line': 188, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 263, 'character': 36}, 'start': {'line': 263, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 314, 'character': 39}, 'start': {'line': 314, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 36}, 'start': {'line': 315, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 316, 'character': 70}, 'start': {'line': 316, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 317, 'character': 41}, 'start': {'line': 317, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 318, 'character': 34}, 'start': {'line': 318, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 319, 'character': 37}, 'start': {'line': 319, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 320, 'character': 56}, 'start': {'line': 320, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 321, 'character': 26}, 'start': {'line': 321, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 322, 'character': 66}, 'start': {'line': 322, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 323, 'character': 45}, 'start': {'line': 323, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 324, 'character': 22}, 'start': {'line': 324, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 325, 'character': 15}, 'start': {'line': 325, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 326, 'character': 19}, 'start': {'line': 326, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 80}, 'start': {'line': 397, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 35}, 'start': {'line': 398, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 36}, 'start': {'line': 400, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 58}, 'start': {'line': 402, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 28}, 'start': {'line': 403, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 18}, 'start': {'line': 404, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 405, 'character': 2}, 'start': {'line': 405, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 57}, 'start': {'line': 406, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 28}, 'start': {'line': 407, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 18}, 'start': {'line': 408, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 33}, 'start': {'line': 410, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 31}, 'start': {'line': 411, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 43}, 'start': {'line': 413, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 30}, 'start': {'line': 414, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 55}, 'start': {'line': 415, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 85}, 'start': {'line': 416, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 99}, 'start': {'line': 417, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 77}, 'start': {'line': 418, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 80}, 'start': {'line': 419, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 19}, 'start': {'line': 420, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 18}, 'start': {'line': 421, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 42}, 'start': {'line': 423, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 32}, 'start': {'line': 424, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 41}, 'start': {'line': 425, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 30}, 'start': {'line': 427, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 64}, 'start': {'line': 428, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 85}, 'start': {'line': 429, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 99}, 'start': {'line': 430, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 77}, 'start': {'line': 431, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 81}, 'start': {'line': 432, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 19}, 'start': {'line': 433, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 18}, 'start': {'line': 434, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 36}, 'start': {'line': 436, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 90}, 'start': {'line': 437, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 17}, 'start': {'line': 438, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 61}, 'start': {'line': 439, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 440, 'character': 32}, 'start': {'line': 440, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 60}, 'start': {'line': 441, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 442, 'character': 34}, 'start': {'line': 442, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 23}, 'start': {'line': 443, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 444, 'character': 18}, 'start': {'line': 444, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 22}, 'start': {'line': 445, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 446, 'character': 41}, 'start': {'line': 446, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 447, 'character': 59}, 'start': {'line': 447, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 448, 'character': 34}, 'start': {'line': 448, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 23}, 'start': {'line': 449, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 23}, 'start': {'line': 450, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 18}, 'start': {'line': 451, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 452, 'character': 18}, 'start': {'line': 452, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 453, 'character': 2}, 'start': {'line': 453, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 454, 'character': 32}, 'start': {'line': 454, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 45}, 'start': {'line': 455, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 456, 'character': 18}, 'start': {'line': 456, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 85}, 'start': {'line': 458, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 459, 'character': 63}, 'start': {'line': 459, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 460, 'character': 33}, 'start': {'line': 460, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 461, 'character': 45}, 'start': {'line': 461, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 462, 'character': 18}, 'start': {'line': 462, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 464, 'character': 31}, 'start': {'line': 464, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 465, 'character': 28}, 'start': {'line': 465, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 466, 'character': 18}, 'start': {'line': 466, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 468, 'character': 78}, 'start': {'line': 468, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 469, 'character': 32}, 'start': {'line': 469, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 470, 'character': 31}, 'start': {'line': 470, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 471, 'character': 32}, 'start': {'line': 471, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 472, 'character': 44}, 'start': {'line': 472, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 20}, 'start': {'line': 473, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 474, 'character': 44}, 'start': {'line': 474, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 475, 'character': 17}, 'start': {'line': 475, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 476, 'character': 54}, 'start': {'line': 476, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 477, 'character': 31}, 'start': {'line': 477, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 478, 'character': 43}, 'start': {'line': 478, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 51}, 'start': {'line': 479, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 480, 'character': 29}, 'start': {'line': 480, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 481, 'character': 31}, 'start': {'line': 481, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 482, 'character': 18}, 'start': {'line': 482, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 483, 'character': 22}, 'start': {'line': 483, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 34}, 'start': {'line': 484, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 485, 'character': 61}, 'start': {'line': 485, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 65}, 'start': {'line': 486, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 487, 'character': 54}, 'start': {'line': 487, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 488, 'character': 47}, 'start': {'line': 488, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 489, 'character': 53}, 'start': {'line': 489, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 490, 'character': 63}, 'start': {'line': 490, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 491, 'character': 48}, 'start': {'line': 491, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 45}, 'start': {'line': 492, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 45}, 'start': {'line': 493, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 53}, 'start': {'line': 494, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 495, 'character': 31}, 'start': {'line': 495, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 496, 'character': 23}, 'start': {'line': 496, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 497, 'character': 23}, 'start': {'line': 497, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 18}, 'start': {'line': 498, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 499, 'character': 18}, 'start': {'line': 499, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 525, 'character': 27}, 'start': {'line': 525, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 14}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 16}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 29}, 'start': {'line': 163, 'character': 15}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 29}, 'start': {'line': 163, 'character': 17}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 23}, 'start': {'line': 167, 'character': 17}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 23}, 'start': {'line': 167, 'character': 19}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 28}, 'start': {'line': 191, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 28}, 'start': {'line': 191, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 32}, 'start': {'line': 192, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 32}, 'start': {'line': 192, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 34}, 'start': {'line': 243, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 34}, 'start': {'line': 243, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 34}, 'start': {'line': 248, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 34}, 'start': {'line': 248, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 36}, 'start': {'line': 256, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 36}, 'start': {'line': 256, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 266, 'character': 29}, 'start': {'line': 266, 'character': 21}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 266, 'character': 29}, 'start': {'line': 266, 'character': 23}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 267, 'character': 37}, 'start': {'line': 267, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 267, 'character': 37}, 'start': {'line': 267, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 268, 'character': 34}, 'start': {'line': 268, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 268, 'character': 34}, 'start': {'line': 268, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 27}, 'start': {'line': 269, 'character': 21}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 27}, 'start': {'line': 269, 'character': 23}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 270, 'character': 29}, 'start': {'line': 270, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 270, 'character': 29}, 'start': {'line': 270, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 27}, 'start': {'line': 271, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 27}, 'start': {'line': 271, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 43}, 'start': {'line': 275, 'character': 25}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 43}, 'start': {'line': 275, 'character': 27}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 290, 'character': 41}, 'start': {'line': 290, 'character': 27}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 290, 'character': 41}, 'start': {'line': 290, 'character': 29}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 291, 'character': 63}, 'start': {'line': 291, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 291, 'character': 63}, 'start': {'line': 291, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 292, 'character': 66}, 'start': {'line': 292, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 292, 'character': 66}, 'start': {'line': 292, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 300, 'character': 39}, 'start': {'line': 300, 'character': 25}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 300, 'character': 39}, 'start': {'line': 300, 'character': 27}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 301, 'character': 66}, 'start': {'line': 301, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 301, 'character': 66}, 'start': {'line': 301, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 302, 'character': 57}, 'start': {'line': 302, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 302, 'character': 57}, 'start': {'line': 302, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 43}, 'start': {'line': 312, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 43}, 'start': {'line': 312, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 40}, 'start': {'line': 395, 'character': 32}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 40}, 'start': {'line': 395, 'character': 34}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 41}, 'start': {'line': 522, 'character': 32}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 41}, 'start': {'line': 522, 'character': 34}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 56}, 'start': {'line': 526, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 56}, 'start': {'line': 526, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 17, 'character': 25}, 'start': {'line': 17, 'character': 8}}, 'severity': 1, 'message': 'unexpected indent', 'source': 'pyflakes'}]] [hook] 2018-02-17 17:07:44,033 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 16, 'character': 46}, 'start': {'line': 16, 'character': 8}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 17, 'character': 17}, 'start': {'line': 17, 'character': 8}}, 'code': 'E113', 'message': 'E113 unexpected indentation', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 297, 'character': 82}, 'start': {'line': 297, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 85}, 'start': {'line': 416, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 99}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 85}, 'start': {'line': 429, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 99}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 81}, 'start': {'line': 432, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 90}, 'start': {'line': 437, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 85}, 'start': {'line': 458, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 530, 'character': 100}, 'start': {'line': 530, 'character': 0}}, 'code': 'E901', 'message': 'E901 TokenError: EOF in multi-line statement', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 529, 'character': 55}, 'start': {'line': 529, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 20, 'character': 17}, 'start': {'line': 20, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 21, 'character': 36}, 'start': {'line': 21, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 23, 'character': 19}, 'start': {'line': 23, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 24, 'character': 36}, 'start': {'line': 24, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 26, 'character': 16}, 'start': {'line': 26, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 27, 'character': 36}, 'start': {'line': 27, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 29, 'character': 17}, 'start': {'line': 29, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 30, 'character': 36}, 'start': {'line': 30, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 32, 'character': 68}, 'start': {'line': 32, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 33, 'character': 54}, 'start': {'line': 33, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 34, 'character': 20}, 'start': {'line': 34, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 35, 'character': 36}, 'start': {'line': 35, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 37, 'character': 76}, 'start': {'line': 37, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 39, 'character': 50}, 'start': {'line': 39, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 40, 'character': 21}, 'start': {'line': 40, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 41, 'character': 36}, 'start': {'line': 41, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 43, 'character': 21}, 'start': {'line': 43, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 44, 'character': 36}, 'start': {'line': 44, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 46, 'character': 66}, 'start': {'line': 46, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 47, 'character': 16}, 'start': {'line': 47, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 48, 'character': 36}, 'start': {'line': 48, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 50, 'character': 19}, 'start': {'line': 50, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 51, 'character': 36}, 'start': {'line': 51, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 53, 'character': 19}, 'start': {'line': 53, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 54, 'character': 36}, 'start': {'line': 54, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 56, 'character': 60}, 'start': {'line': 56, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 57, 'character': 21}, 'start': {'line': 57, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 58, 'character': 36}, 'start': {'line': 58, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 60, 'character': 70}, 'start': {'line': 60, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 61, 'character': 66}, 'start': {'line': 61, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 62, 'character': 21}, 'start': {'line': 62, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 63, 'character': 36}, 'start': {'line': 63, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 65, 'character': 21}, 'start': {'line': 65, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 66, 'character': 36}, 'start': {'line': 66, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 68, 'character': 21}, 'start': {'line': 68, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 69, 'character': 36}, 'start': {'line': 69, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 71, 'character': 22}, 'start': {'line': 71, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 72, 'character': 36}, 'start': {'line': 72, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 74, 'character': 23}, 'start': {'line': 74, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 75, 'character': 36}, 'start': {'line': 75, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 24}, 'start': {'line': 77, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 78, 'character': 36}, 'start': {'line': 78, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 25}, 'start': {'line': 80, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 36}, 'start': {'line': 81, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 83, 'character': 23}, 'start': {'line': 83, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 84, 'character': 36}, 'start': {'line': 84, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 86, 'character': 19}, 'start': {'line': 86, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 87, 'character': 36}, 'start': {'line': 87, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 36}, 'start': {'line': 90, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 92, 'character': 23}, 'start': {'line': 92, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 93, 'character': 36}, 'start': {'line': 93, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 95, 'character': 24}, 'start': {'line': 95, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 96, 'character': 36}, 'start': {'line': 96, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 98, 'character': 18}, 'start': {'line': 98, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 99, 'character': 36}, 'start': {'line': 99, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 101, 'character': 21}, 'start': {'line': 101, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 102, 'character': 36}, 'start': {'line': 102, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 21}, 'start': {'line': 104, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 36}, 'start': {'line': 105, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 107, 'character': 24}, 'start': {'line': 107, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 108, 'character': 36}, 'start': {'line': 108, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 23}, 'start': {'line': 110, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 111, 'character': 36}, 'start': {'line': 111, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 23}, 'start': {'line': 113, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 114, 'character': 36}, 'start': {'line': 114, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 116, 'character': 34}, 'start': {'line': 116, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 117, 'character': 21}, 'start': {'line': 117, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 118, 'character': 36}, 'start': {'line': 118, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 120, 'character': 42}, 'start': {'line': 120, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 121, 'character': 19}, 'start': {'line': 121, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 122, 'character': 36}, 'start': {'line': 122, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 124, 'character': 68}, 'start': {'line': 124, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 125, 'character': 70}, 'start': {'line': 125, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 126, 'character': 17}, 'start': {'line': 126, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 127, 'character': 36}, 'start': {'line': 127, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 129, 'character': 55}, 'start': {'line': 129, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 130, 'character': 19}, 'start': {'line': 130, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 131, 'character': 36}, 'start': {'line': 131, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 70}, 'start': {'line': 133, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 134, 'character': 19}, 'start': {'line': 134, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 135, 'character': 40}, 'start': {'line': 135, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 63}, 'start': {'line': 137, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 28}, 'start': {'line': 138, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 17}, 'start': {'line': 139, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 140, 'character': 36}, 'start': {'line': 140, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 142, 'character': 18}, 'start': {'line': 142, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 17}, 'start': {'line': 143, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 144, 'character': 36}, 'start': {'line': 144, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 146, 'character': 62}, 'start': {'line': 146, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 147, 'character': 17}, 'start': {'line': 147, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 148, 'character': 37}, 'start': {'line': 148, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 21}, 'start': {'line': 150, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 36}, 'start': {'line': 151, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 73}, 'start': {'line': 153, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 154, 'character': 55}, 'start': {'line': 154, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 155, 'character': 17}, 'start': {'line': 155, 'character': 8}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 36}, 'start': {'line': 156, 'character': 12}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 0}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 36}, 'start': {'line': 160, 'character': 0}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 35}, 'start': {'line': 188, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 263, 'character': 36}, 'start': {'line': 263, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 314, 'character': 39}, 'start': {'line': 314, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 315, 'character': 36}, 'start': {'line': 315, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 316, 'character': 70}, 'start': {'line': 316, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 317, 'character': 41}, 'start': {'line': 317, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 318, 'character': 34}, 'start': {'line': 318, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 319, 'character': 37}, 'start': {'line': 319, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 320, 'character': 56}, 'start': {'line': 320, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 321, 'character': 26}, 'start': {'line': 321, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 322, 'character': 66}, 'start': {'line': 322, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 323, 'character': 45}, 'start': {'line': 323, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 324, 'character': 22}, 'start': {'line': 324, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 325, 'character': 15}, 'start': {'line': 325, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 326, 'character': 19}, 'start': {'line': 326, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 80}, 'start': {'line': 397, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 35}, 'start': {'line': 398, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 400, 'character': 36}, 'start': {'line': 400, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 58}, 'start': {'line': 402, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 403, 'character': 28}, 'start': {'line': 403, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 18}, 'start': {'line': 404, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 405, 'character': 2}, 'start': {'line': 405, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 406, 'character': 57}, 'start': {'line': 406, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 28}, 'start': {'line': 407, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 18}, 'start': {'line': 408, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 33}, 'start': {'line': 410, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 31}, 'start': {'line': 411, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 412, 'character': 85}, 'start': {'line': 412, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 413, 'character': 43}, 'start': {'line': 413, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 30}, 'start': {'line': 414, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 55}, 'start': {'line': 415, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 85}, 'start': {'line': 416, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 99}, 'start': {'line': 417, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 418, 'character': 77}, 'start': {'line': 418, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 419, 'character': 80}, 'start': {'line': 419, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 420, 'character': 19}, 'start': {'line': 420, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 421, 'character': 18}, 'start': {'line': 421, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 423, 'character': 42}, 'start': {'line': 423, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 32}, 'start': {'line': 424, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 425, 'character': 41}, 'start': {'line': 425, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 85}, 'start': {'line': 426, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 30}, 'start': {'line': 427, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 64}, 'start': {'line': 428, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 429, 'character': 85}, 'start': {'line': 429, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 99}, 'start': {'line': 430, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 431, 'character': 77}, 'start': {'line': 431, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 432, 'character': 81}, 'start': {'line': 432, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 433, 'character': 19}, 'start': {'line': 433, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 434, 'character': 18}, 'start': {'line': 434, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 36}, 'start': {'line': 436, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 437, 'character': 90}, 'start': {'line': 437, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 438, 'character': 17}, 'start': {'line': 438, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 439, 'character': 61}, 'start': {'line': 439, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 440, 'character': 32}, 'start': {'line': 440, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 441, 'character': 60}, 'start': {'line': 441, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 442, 'character': 34}, 'start': {'line': 442, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 23}, 'start': {'line': 443, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 444, 'character': 18}, 'start': {'line': 444, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 22}, 'start': {'line': 445, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 446, 'character': 41}, 'start': {'line': 446, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 447, 'character': 59}, 'start': {'line': 447, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 448, 'character': 34}, 'start': {'line': 448, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 449, 'character': 23}, 'start': {'line': 449, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 450, 'character': 23}, 'start': {'line': 450, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 451, 'character': 18}, 'start': {'line': 451, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 452, 'character': 18}, 'start': {'line': 452, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 453, 'character': 2}, 'start': {'line': 453, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 454, 'character': 32}, 'start': {'line': 454, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 455, 'character': 45}, 'start': {'line': 455, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 456, 'character': 18}, 'start': {'line': 456, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 458, 'character': 85}, 'start': {'line': 458, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 459, 'character': 63}, 'start': {'line': 459, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 460, 'character': 33}, 'start': {'line': 460, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 461, 'character': 45}, 'start': {'line': 461, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 462, 'character': 18}, 'start': {'line': 462, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 464, 'character': 31}, 'start': {'line': 464, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 465, 'character': 28}, 'start': {'line': 465, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 466, 'character': 18}, 'start': {'line': 466, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 468, 'character': 78}, 'start': {'line': 468, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 469, 'character': 32}, 'start': {'line': 469, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 470, 'character': 31}, 'start': {'line': 470, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 471, 'character': 32}, 'start': {'line': 471, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 472, 'character': 44}, 'start': {'line': 472, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 20}, 'start': {'line': 473, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 474, 'character': 44}, 'start': {'line': 474, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 475, 'character': 17}, 'start': {'line': 475, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 476, 'character': 54}, 'start': {'line': 476, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 477, 'character': 31}, 'start': {'line': 477, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 478, 'character': 43}, 'start': {'line': 478, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 51}, 'start': {'line': 479, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 480, 'character': 29}, 'start': {'line': 480, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 481, 'character': 31}, 'start': {'line': 481, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 482, 'character': 18}, 'start': {'line': 482, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 483, 'character': 22}, 'start': {'line': 483, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 484, 'character': 34}, 'start': {'line': 484, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 485, 'character': 61}, 'start': {'line': 485, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 65}, 'start': {'line': 486, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 487, 'character': 54}, 'start': {'line': 487, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 488, 'character': 47}, 'start': {'line': 488, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 489, 'character': 53}, 'start': {'line': 489, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 490, 'character': 63}, 'start': {'line': 490, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 491, 'character': 48}, 'start': {'line': 491, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 492, 'character': 45}, 'start': {'line': 492, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 493, 'character': 45}, 'start': {'line': 493, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 494, 'character': 53}, 'start': {'line': 494, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 495, 'character': 31}, 'start': {'line': 495, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 496, 'character': 23}, 'start': {'line': 496, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 497, 'character': 23}, 'start': {'line': 497, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 498, 'character': 18}, 'start': {'line': 498, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 499, 'character': 18}, 'start': {'line': 499, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 525, 'character': 27}, 'start': {'line': 525, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 14}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 16}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 29}, 'start': {'line': 163, 'character': 15}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 29}, 'start': {'line': 163, 'character': 17}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 23}, 'start': {'line': 167, 'character': 17}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 23}, 'start': {'line': 167, 'character': 19}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 28}, 'start': {'line': 191, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 191, 'character': 28}, 'start': {'line': 191, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 32}, 'start': {'line': 192, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 32}, 'start': {'line': 192, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 34}, 'start': {'line': 243, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 34}, 'start': {'line': 243, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 34}, 'start': {'line': 248, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 34}, 'start': {'line': 248, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 36}, 'start': {'line': 256, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 36}, 'start': {'line': 256, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 266, 'character': 29}, 'start': {'line': 266, 'character': 21}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 266, 'character': 29}, 'start': {'line': 266, 'character': 23}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 267, 'character': 37}, 'start': {'line': 267, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 267, 'character': 37}, 'start': {'line': 267, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 268, 'character': 34}, 'start': {'line': 268, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 268, 'character': 34}, 'start': {'line': 268, 'character': 30}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 27}, 'start': {'line': 269, 'character': 21}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 27}, 'start': {'line': 269, 'character': 23}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 270, 'character': 29}, 'start': {'line': 270, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 270, 'character': 29}, 'start': {'line': 270, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 27}, 'start': {'line': 271, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 27}, 'start': {'line': 271, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 43}, 'start': {'line': 275, 'character': 25}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 43}, 'start': {'line': 275, 'character': 27}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 290, 'character': 41}, 'start': {'line': 290, 'character': 27}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 290, 'character': 41}, 'start': {'line': 290, 'character': 29}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 291, 'character': 63}, 'start': {'line': 291, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 291, 'character': 63}, 'start': {'line': 291, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 292, 'character': 66}, 'start': {'line': 292, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 292, 'character': 66}, 'start': {'line': 292, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 300, 'character': 39}, 'start': {'line': 300, 'character': 25}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 300, 'character': 39}, 'start': {'line': 300, 'character': 27}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 301, 'character': 66}, 'start': {'line': 301, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 301, 'character': 66}, 'start': {'line': 301, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 302, 'character': 57}, 'start': {'line': 302, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 302, 'character': 57}, 'start': {'line': 302, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 43}, 'start': {'line': 312, 'character': 26}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 312, 'character': 43}, 'start': {'line': 312, 'character': 28}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 40}, 'start': {'line': 395, 'character': 32}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 40}, 'start': {'line': 395, 'character': 34}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 41}, 'start': {'line': 522, 'character': 32}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 522, 'character': 41}, 'start': {'line': 522, 'character': 34}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 56}, 'start': {'line': 526, 'character': 22}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 526, 'character': 56}, 'start': {'line': 526, 'character': 24}}, 'code': 'E251', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle'}, {'range': {'end': {'line': 17, 'character': 25}, 'start': {'line': 17, 'character': 8}}, 'severity': 1, 'message': 'unexpected indent', 'source': 'pyflakes'}]} 2018-02-17 17:07:55,085 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {}\\n\\n # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'bczuv\':\\n \'\xe2\x80\x9e\',\\n\\n \'eczuv\':\\n \'\xe2\x80\x9c\',\\n\\n \'pomlcka\':\\n \'\xe2\x80\x94\',\\n\\n \'krat\':\\n \'\xc3\x97\',\\n\\n \'minus\':\\n \'\xe2\x80\x93\',\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\':\\n \'[\',\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n \\"bkzavorka\\":\\n \'\xe2\x8c\x88\',\\n\\n \\"ekzavorka\\":\\n \'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\":\\n \'\xe2\x80\xa6\',\\n\\n \\"amacron\\":\\n \'\xc4\x81\',\\n\\n \\"omacron\\":\\n \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":110}}}' 2018-02-17 17:07:55,586 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:55,587 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:07:55,588 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:55,588 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:07:55,614 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:07:55,615 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:07:55,616 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 16, 'character': 46}, 'start': {'line': 16, 'character': 8}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 17, 'character': 17}, 'start': {'line': 17, 'character': 8}}, 'code': 'E113', 'message': 'E113 unexpected indentation', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 36}, 'start': {'line': 160, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 35}, 'start': {'line': 188, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 43}, 'start': {'line': 201, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 69}, 'start': {'line': 202, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 203, 'character': 40}, 'start': {'line': 203, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 204, 'character': 70}, 'start': {'line': 204, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 205, 'character': 43}, 'start': {'line': 205, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 206, 'character': 61}, 'start': {'line': 206, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 207, 'character': 59}, 'start': {'line': 207, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 208, 'character': 60}, 'start': {'line': 208, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 40}, 'start': {'line': 209, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 54}, 'start': {'line': 197, 'character': 29}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 54}, 'start': {'line': 197, 'character': 29}}, 'code': 'E113', 'message': 'E113 unexpected indentation', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 210, 'character': 62}, 'start': {'line': 210, 'character': 18}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}], [], [{'range': {'end': {'line': 17, 'character': 25}, 'start': {'line': 17, 'character': 8}}, 'severity': 1, 'message': 'unexpected indent', 'source': 'pyflakes'}]] [hook] 2018-02-17 17:07:55,616 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 16, 'character': 46}, 'start': {'line': 16, 'character': 8}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 17, 'character': 17}, 'start': {'line': 17, 'character': 8}}, 'code': 'E113', 'message': 'E113 unexpected indentation', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 72}, 'start': {'line': 158, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 36}, 'start': {'line': 160, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 35}, 'start': {'line': 188, 'character': 0}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 201, 'character': 43}, 'start': {'line': 201, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 202, 'character': 69}, 'start': {'line': 202, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 203, 'character': 40}, 'start': {'line': 203, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 204, 'character': 70}, 'start': {'line': 204, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 205, 'character': 43}, 'start': {'line': 205, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 206, 'character': 61}, 'start': {'line': 206, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 207, 'character': 59}, 'start': {'line': 207, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 208, 'character': 60}, 'start': {'line': 208, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 40}, 'start': {'line': 209, 'character': 8}}, 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 54}, 'start': {'line': 197, 'character': 29}}, 'code': 'E111', 'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 197, 'character': 54}, 'start': {'line': 197, 'character': 29}}, 'code': 'E113', 'message': 'E113 unexpected indentation', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 210, 'character': 62}, 'start': {'line': 210, 'character': 18}}, 'code': 'E901', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle'}, {'range': {'end': {'line': 17, 'character': 25}, 'start': {'line': 17, 'character': 8}}, 'severity': 1, 'message': 'unexpected indent', 'source': 'pyflakes'}]} 2018-02-17 17:08:16,686 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \\n \'bczuv\': \'\xe2\x80\x9e\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n\\n \'eczuv\':\\n \'\xe2\x80\x9c\',\\n\\n \'pomlcka\':\\n \'\xe2\x80\x94\',\\n\\n \'krat\':\\n \'\xc3\x97\',\\n\\n \'minus\':\\n \'\xe2\x80\x93\',\\n\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\':\\n \'[\',\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n \\"bkzavorka\\":\\n \'\xe2\x8c\x88\',\\n\\n \\"ekzavorka\\":\\n \'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\":\\n \'\xe2\x80\xa6\',\\n\\n \\"amacron\\":\\n \'\xc4\x81\',\\n\\n \\"omacron\\":\\n \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":111}}}' 2018-02-17 17:08:17,188 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:08:17,188 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:08:17,188 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:08:17,188 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:08:17,188 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:08:17,188 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:08:17,189 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:08:17,189 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:08:17,189 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:08:17,189 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:08:17,294 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 159, 'character': 19}, 'start': {'line': 159, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 19}, 'start': {'line': 163, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 19}, 'start': {'line': 171, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 186, 'character': 19}, 'start': {'line': 186, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 19}, 'start': {'line': 192, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 239, 'character': 19}, 'start': {'line': 239, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 19}, 'start': {'line': 248, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 261, 'character': 19}, 'start': {'line': 261, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 262, 'character': 19}, 'start': {'line': 262, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 19}, 'start': {'line': 271, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 499, 'character': 19}, 'start': {'line': 499, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:08:17,294 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:08:17,294 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:08:17,294 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:08:17,294 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:08:17,295 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:08:17,295 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:08:17,295 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:08:17,295 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:08:17,295 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:08:17,305 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 9}, 'start': {'line': 15, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 17}, 'start': {'line': 19, 'character': 12}}, 'code': 'E131', 'message': 'E131 continuation line unaligned for hanging indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 36}, 'start': {'line': 158, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 295, 'character': 82}, 'start': {'line': 295, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 85}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 85}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 99}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 85}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 85}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 99}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 81}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 90}, 'start': {'line': 435, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 456, 'character': 85}, 'start': {'line': 456, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 527, 'character': 55}, 'start': {'line': 527, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 159, 'character': 19}, 'start': {'line': 159, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 19}, 'start': {'line': 163, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 19}, 'start': {'line': 171, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 186, 'character': 19}, 'start': {'line': 186, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 19}, 'start': {'line': 192, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 239, 'character': 19}, 'start': {'line': 239, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 19}, 'start': {'line': 248, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 261, 'character': 19}, 'start': {'line': 261, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 262, 'character': 19}, 'start': {'line': 262, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 19}, 'start': {'line': 271, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 499, 'character': 19}, 'start': {'line': 499, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 272, 'character': 28}, 'start': {'line': 272, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:08:17,305 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 9}, 'start': {'line': 15, 'character': 0}}, 'code': 'W293', 'message': 'W293 blank line contains whitespace', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 19, 'character': 17}, 'start': {'line': 19, 'character': 12}}, 'code': 'E131', 'message': 'E131 continuation line unaligned for hanging indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 36}, 'start': {'line': 158, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 295, 'character': 82}, 'start': {'line': 295, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 85}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 85}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 99}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 424, 'character': 85}, 'start': {'line': 424, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 427, 'character': 85}, 'start': {'line': 427, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 428, 'character': 99}, 'start': {'line': 428, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 81}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 435, 'character': 90}, 'start': {'line': 435, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 456, 'character': 85}, 'start': {'line': 456, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 527, 'character': 55}, 'start': {'line': 527, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 159, 'character': 19}, 'start': {'line': 159, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 163, 'character': 19}, 'start': {'line': 163, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 171, 'character': 19}, 'start': {'line': 171, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 186, 'character': 19}, 'start': {'line': 186, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 187, 'character': 19}, 'start': {'line': 187, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 192, 'character': 19}, 'start': {'line': 192, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 239, 'character': 19}, 'start': {'line': 239, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 19}, 'start': {'line': 248, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 261, 'character': 19}, 'start': {'line': 261, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 262, 'character': 19}, 'start': {'line': 262, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 271, 'character': 19}, 'start': {'line': 271, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 499, 'character': 19}, 'start': {'line': 499, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 272, 'character': 28}, 'start': {'line': 272, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:09:29,319 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\':\\n \'[\',\\n\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku -->\\n \\"bkzavorka\\":\\n \'\xe2\x8c\x88\',\\n\\n \\"ekzavorka\\":\\n \'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\":\\n \'\xe2\x80\xa6\',\\n\\n \\"amacron\\":\\n \'\xc4\x81\',\\n\\n \\"omacron\\":\\n \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":112}}}' 2018-02-17 17:09:29,320 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":112}}}' 2018-02-17 17:09:29,821 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:09:29,821 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:29,821 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:09:29,822 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:09:29,822 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:29,822 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:29,822 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:29,823 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:09:29,823 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:29,823 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:09:30,074 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 146, 'character': 19}, 'start': {'line': 146, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 19}, 'start': {'line': 150, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 226, 'character': 19}, 'start': {'line': 226, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 19}, 'start': {'line': 243, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 19}, 'start': {'line': 248, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 249, 'character': 19}, 'start': {'line': 249, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 258, 'character': 19}, 'start': {'line': 258, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 19}, 'start': {'line': 486, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:09:30,074 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:30,075 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:09:30,075 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:09:30,075 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:30,075 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:30,076 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:30,076 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:09:30,076 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:30,076 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:09:30,100 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 20, 'character': 17}, 'start': {'line': 20, 'character': 12}}, 'code': 'E131', 'message': 'E131 continuation line unaligned for hanging indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 74}, 'start': {'line': 15, 'character': 35}}, 'code': 'E261', 'message': 'E261 at least two spaces before inline comment', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 36}, 'start': {'line': 145, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 282, 'character': 82}, 'start': {'line': 282, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 85}, 'start': {'line': 397, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 85}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 85}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 99}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 81}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 90}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 85}, 'start': {'line': 443, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 514, 'character': 55}, 'start': {'line': 514, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 146, 'character': 19}, 'start': {'line': 146, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 19}, 'start': {'line': 150, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 226, 'character': 19}, 'start': {'line': 226, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 19}, 'start': {'line': 243, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 19}, 'start': {'line': 248, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 249, 'character': 19}, 'start': {'line': 249, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 258, 'character': 19}, 'start': {'line': 258, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 19}, 'start': {'line': 486, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 259, 'character': 28}, 'start': {'line': 259, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:09:30,100 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 20, 'character': 17}, 'start': {'line': 20, 'character': 12}}, 'code': 'E131', 'message': 'E131 continuation line unaligned for hanging indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 74}, 'start': {'line': 15, 'character': 35}}, 'code': 'E261', 'message': 'E261 at least two spaces before inline comment', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 36}, 'start': {'line': 145, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 282, 'character': 82}, 'start': {'line': 282, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 397, 'character': 85}, 'start': {'line': 397, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 411, 'character': 85}, 'start': {'line': 411, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 414, 'character': 85}, 'start': {'line': 414, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 99}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 81}, 'start': {'line': 417, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 422, 'character': 90}, 'start': {'line': 422, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 443, 'character': 85}, 'start': {'line': 443, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 514, 'character': 55}, 'start': {'line': 514, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 146, 'character': 19}, 'start': {'line': 146, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 150, 'character': 19}, 'start': {'line': 150, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 226, 'character': 19}, 'start': {'line': 226, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 243, 'character': 19}, 'start': {'line': 243, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 248, 'character': 19}, 'start': {'line': 248, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 249, 'character': 19}, 'start': {'line': 249, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 258, 'character': 19}, 'start': {'line': 258, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 486, 'character': 19}, 'start': {'line': 486, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 259, 'character': 28}, 'start': {'line': 259, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:09:55,221 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\', # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\":\\n \'\xe2\x80\xa6\',\\n\\n \\"amacron\\":\\n \'\xc4\x81\',\\n\\n \\"omacron\\":\\n \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":113}}}' 2018-02-17 17:09:55,723 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:09:55,723 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:55,723 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:09:55,723 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:09:55,723 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:55,723 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:55,724 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:55,724 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:09:55,724 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:55,724 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:09:55,840 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 19}, 'start': {'line': 138, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 19}, 'start': {'line': 139, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 19}, 'start': {'line': 143, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 19}, 'start': {'line': 151, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 19}, 'start': {'line': 167, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 19}, 'start': {'line': 172, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 215, 'character': 19}, 'start': {'line': 215, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 219, 'character': 19}, 'start': {'line': 219, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 228, 'character': 19}, 'start': {'line': 228, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 241, 'character': 19}, 'start': {'line': 241, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 242, 'character': 19}, 'start': {'line': 242, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 251, 'character': 19}, 'start': {'line': 251, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 19}, 'start': {'line': 479, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:09:55,840 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:55,840 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:09:55,841 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:09:55,853 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 22, 'character': 83}, 'start': {'line': 22, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 26, 'character': 17}, 'start': {'line': 26, 'character': 12}}, 'code': 'E131', 'message': 'E131 continuation line unaligned for hanging indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 74}, 'start': {'line': 15, 'character': 35}}, 'code': 'E261', 'message': 'E261 at least two spaces before inline comment', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 36}, 'start': {'line': 138, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 82}, 'start': {'line': 275, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 85}, 'start': {'line': 390, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 85}, 'start': {'line': 394, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 99}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 85}, 'start': {'line': 407, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 99}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 81}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 90}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 85}, 'start': {'line': 436, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 507, 'character': 55}, 'start': {'line': 507, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 19}, 'start': {'line': 138, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 19}, 'start': {'line': 139, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 19}, 'start': {'line': 143, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 19}, 'start': {'line': 151, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 19}, 'start': {'line': 167, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 19}, 'start': {'line': 172, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 215, 'character': 19}, 'start': {'line': 215, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 219, 'character': 19}, 'start': {'line': 219, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 228, 'character': 19}, 'start': {'line': 228, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 241, 'character': 19}, 'start': {'line': 241, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 242, 'character': 19}, 'start': {'line': 242, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 251, 'character': 19}, 'start': {'line': 251, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 19}, 'start': {'line': 479, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 252, 'character': 28}, 'start': {'line': 252, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:09:55,854 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 22, 'character': 83}, 'start': {'line': 22, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 26, 'character': 17}, 'start': {'line': 26, 'character': 12}}, 'code': 'E131', 'message': 'E131 continuation line unaligned for hanging indent', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 15, 'character': 74}, 'start': {'line': 15, 'character': 35}}, 'code': 'E261', 'message': 'E261 at least two spaces before inline comment', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 36}, 'start': {'line': 138, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 275, 'character': 82}, 'start': {'line': 275, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 390, 'character': 85}, 'start': {'line': 390, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 394, 'character': 85}, 'start': {'line': 394, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 395, 'character': 99}, 'start': {'line': 395, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 85}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 407, 'character': 85}, 'start': {'line': 407, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 408, 'character': 99}, 'start': {'line': 408, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 410, 'character': 81}, 'start': {'line': 410, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 415, 'character': 90}, 'start': {'line': 415, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 436, 'character': 85}, 'start': {'line': 436, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 507, 'character': 55}, 'start': {'line': 507, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 138, 'character': 19}, 'start': {'line': 138, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 139, 'character': 19}, 'start': {'line': 139, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 143, 'character': 19}, 'start': {'line': 143, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 151, 'character': 19}, 'start': {'line': 151, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 167, 'character': 19}, 'start': {'line': 167, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 172, 'character': 19}, 'start': {'line': 172, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 215, 'character': 19}, 'start': {'line': 215, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 219, 'character': 19}, 'start': {'line': 219, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 228, 'character': 19}, 'start': {'line': 228, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 241, 'character': 19}, 'start': {'line': 241, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 242, 'character': 19}, 'start': {'line': 242, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 251, 'character': 19}, 'start': {'line': 251, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 479, 'character': 19}, 'start': {'line': 479, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 252, 'character': 28}, 'start': {'line': 252, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:10:26,708 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":114}}}' 2018-02-17 17:10:26,722 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":114}}}' 2018-02-17 17:10:27,223 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:10:27,224 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:27,224 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:10:27,224 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:10:27,224 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:27,224 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:27,225 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:27,225 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:10:27,225 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:27,225 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:10:27,453 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:10:27,454 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:27,454 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:10:27,454 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:10:27,454 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:27,454 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:27,455 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:27,455 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:10:27,455 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:27,455 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:10:27,476 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 15, 'character': 70}, 'start': {'line': 15, 'character': 31}}, 'code': 'E261', 'message': 'E261 at least two spaces before inline comment', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 36}, 'start': {'line': 132, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 82}, 'start': {'line': 269, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 384, 'character': 85}, 'start': {'line': 384, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 85}, 'start': {'line': 388, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 99}, 'start': {'line': 389, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 85}, 'start': {'line': 398, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 81}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 90}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 85}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 55}, 'start': {'line': 501, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 246, 'character': 28}, 'start': {'line': 246, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:10:27,476 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 15, 'character': 70}, 'start': {'line': 15, 'character': 31}}, 'code': 'E261', 'message': 'E261 at least two spaces before inline comment', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 36}, 'start': {'line': 132, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 82}, 'start': {'line': 269, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 384, 'character': 85}, 'start': {'line': 384, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 85}, 'start': {'line': 388, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 99}, 'start': {'line': 389, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 85}, 'start': {'line': 398, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 81}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 90}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 85}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 55}, 'start': {'line': 501, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 246, 'character': 28}, 'start': {'line': 246, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:10:34,931 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":115}}}' 2018-02-17 17:10:35,433 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:10:35,433 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:35,433 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:10:35,433 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:10:35,433 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:35,434 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:35,434 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:35,434 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:10:35,434 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:35,434 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:10:35,539 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:10:35,539 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:35,539 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:10:35,539 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:10:35,539 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:35,539 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:35,540 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:35,540 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:10:35,540 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:35,540 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:10:35,550 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 132, 'character': 36}, 'start': {'line': 132, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 82}, 'start': {'line': 269, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 384, 'character': 85}, 'start': {'line': 384, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 85}, 'start': {'line': 388, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 99}, 'start': {'line': 389, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 85}, 'start': {'line': 398, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 81}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 90}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 85}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 55}, 'start': {'line': 501, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 246, 'character': 28}, 'start': {'line': 246, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:10:35,550 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 132, 'character': 36}, 'start': {'line': 132, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 82}, 'start': {'line': 269, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 384, 'character': 85}, 'start': {'line': 384, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 85}, 'start': {'line': 388, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 99}, 'start': {'line': 389, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 85}, 'start': {'line': 398, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 81}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 90}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 85}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 55}, 'start': {'line': 501, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 246, 'character': 28}, 'start': {'line': 246, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:10:35,725 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n # some non-ASCII characters which are encoded as elements\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\":\\n \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\":\\n \'\xe2\x82\x91\',\\n\\n \\"asuperior\\":\\n \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\":\\n \'\xe2\x80\x98\',\\n\\n \\"quoteright\\":\\n \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\":\\n \'\xc3\xa2\',\\n\\n \\"bmacronbelow\\":\\n \'\xe1\xb8\x87\',\\n\\n \\"dmacronbelow \\":\\n \'\xe1\xb8\x8f\',\\n\\n \\"ecircumflex\\":\\n \'\xc3\xaa\',\\n\\n \\"emacron\\":\\n \'\xc4\x93\',\\n\\n \\"gmacron\\":\\n \'\xe1\xb8\xa1\',\\n\\n \\"icircumflex\\":\\n \'\xc3\xae\',\\n\\n \\"kmacronbelow\\":\\n \'\xe1\xb8\xb5\',\\n\\n \\"sacute\\":\\n \'\xc5\x9b\',\\n\\n \\"sdotbelow\\":\\n \'\xe1\xb9\xa3\',\\n\\n \\"tdotbelow\\":\\n \'\xe1\xb9\xad\',\\n\\n \\"tmacronbelow\\":\\n \'\xe1\xb9\xaf\',\\n\\n \\"ocircumflex\\":\\n \'\xc3\xb4\',\\n\\n \\"ucircumflex\\":\\n \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":116}}}' 2018-02-17 17:10:35,734 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":116}}}' 2018-02-17 17:10:36,239 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:10:36,240 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:36,240 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:10:36,240 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:10:36,241 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:36,241 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:36,241 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:36,241 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:10:36,242 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:36,242 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:10:36,478 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:10:36,479 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:36,479 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:10:36,479 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:10:36,479 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:36,479 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:36,480 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:10:36,480 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:10:36,480 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:10:36,480 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:10:36,503 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 132, 'character': 36}, 'start': {'line': 132, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 82}, 'start': {'line': 269, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 384, 'character': 85}, 'start': {'line': 384, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 85}, 'start': {'line': 388, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 99}, 'start': {'line': 389, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 85}, 'start': {'line': 398, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 81}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 90}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 85}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 55}, 'start': {'line': 501, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 246, 'character': 28}, 'start': {'line': 246, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:10:36,503 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 132, 'character': 36}, 'start': {'line': 132, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 269, 'character': 82}, 'start': {'line': 269, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 384, 'character': 85}, 'start': {'line': 384, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 388, 'character': 85}, 'start': {'line': 388, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 389, 'character': 99}, 'start': {'line': 389, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 398, 'character': 85}, 'start': {'line': 398, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 401, 'character': 85}, 'start': {'line': 401, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 402, 'character': 99}, 'start': {'line': 402, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 404, 'character': 81}, 'start': {'line': 404, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 409, 'character': 90}, 'start': {'line': 409, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 430, 'character': 85}, 'start': {'line': 430, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 501, 'character': 55}, 'start': {'line': 501, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 132, 'character': 19}, 'start': {'line': 132, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 133, 'character': 19}, 'start': {'line': 133, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 137, 'character': 19}, 'start': {'line': 137, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 160, 'character': 19}, 'start': {'line': 160, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 161, 'character': 19}, 'start': {'line': 161, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 209, 'character': 19}, 'start': {'line': 209, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 19}, 'start': {'line': 213, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 19}, 'start': {'line': 222, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 235, 'character': 19}, 'start': {'line': 235, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 236, 'character': 19}, 'start': {'line': 236, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 245, 'character': 19}, 'start': {'line': 245, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 473, 'character': 19}, 'start': {'line': 473, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 246, 'character': 28}, 'start': {'line': 246, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:11:24,692 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\":\\n \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\":\\n \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\":\\n \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\":\\n \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\":\\n \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\":\\n \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\":\\n \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\":\\n \'//\',\\n\\n \\"spojovnik\\":\\n \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\':\\n \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":117}}}' 2018-02-17 17:11:24,694 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":117}}}' 2018-02-17 17:11:25,195 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:11:25,195 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:25,196 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:25,196 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:25,196 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:25,196 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:25,197 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:25,197 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:25,197 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:25,197 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:11:25,426 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 86, 'character': 19}, 'start': {'line': 86, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 98, 'character': 19}, 'start': {'line': 98, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 19}, 'start': {'line': 113, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 162, 'character': 19}, 'start': {'line': 162, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 183, 'character': 19}, 'start': {'line': 183, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 19}, 'start': {'line': 198, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 19}, 'start': {'line': 426, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:11:25,426 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:25,426 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:25,427 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:25,427 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:25,427 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:25,427 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:25,428 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:25,428 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:25,428 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:11:25,451 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 85, 'character': 36}, 'start': {'line': 85, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 82}, 'start': {'line': 222, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 337, 'character': 85}, 'start': {'line': 337, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 341, 'character': 85}, 'start': {'line': 341, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 342, 'character': 99}, 'start': {'line': 342, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 351, 'character': 85}, 'start': {'line': 351, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 354, 'character': 85}, 'start': {'line': 354, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 355, 'character': 99}, 'start': {'line': 355, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 81}, 'start': {'line': 357, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 362, 'character': 90}, 'start': {'line': 362, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 85}, 'start': {'line': 383, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 454, 'character': 55}, 'start': {'line': 454, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 86, 'character': 19}, 'start': {'line': 86, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 98, 'character': 19}, 'start': {'line': 98, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 19}, 'start': {'line': 113, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 162, 'character': 19}, 'start': {'line': 162, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 183, 'character': 19}, 'start': {'line': 183, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 19}, 'start': {'line': 198, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 19}, 'start': {'line': 426, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 199, 'character': 28}, 'start': {'line': 199, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:11:25,451 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 85, 'character': 36}, 'start': {'line': 85, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 222, 'character': 82}, 'start': {'line': 222, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 337, 'character': 85}, 'start': {'line': 337, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 341, 'character': 85}, 'start': {'line': 341, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 342, 'character': 99}, 'start': {'line': 342, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 351, 'character': 85}, 'start': {'line': 351, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 354, 'character': 85}, 'start': {'line': 354, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 355, 'character': 99}, 'start': {'line': 355, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 357, 'character': 81}, 'start': {'line': 357, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 362, 'character': 90}, 'start': {'line': 362, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 383, 'character': 85}, 'start': {'line': 383, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 454, 'character': 55}, 'start': {'line': 454, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 85, 'character': 19}, 'start': {'line': 85, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 86, 'character': 19}, 'start': {'line': 86, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 90, 'character': 19}, 'start': {'line': 90, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 98, 'character': 19}, 'start': {'line': 98, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 113, 'character': 19}, 'start': {'line': 113, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 114, 'character': 19}, 'start': {'line': 114, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 119, 'character': 19}, 'start': {'line': 119, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 162, 'character': 19}, 'start': {'line': 162, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 183, 'character': 19}, 'start': {'line': 183, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 198, 'character': 19}, 'start': {'line': 198, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 426, 'character': 19}, 'start': {'line': 426, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 199, 'character': 28}, 'start': {'line': 199, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:11:52,977 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":118}}}' 2018-02-17 17:11:52,978 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":118}}}' 2018-02-17 17:11:53,479 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:11:53,479 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:53,479 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:53,479 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:53,480 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:53,480 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:53,480 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:53,480 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:53,480 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:53,481 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:11:53,719 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 75, 'character': 19}, 'start': {'line': 75, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 88, 'character': 19}, 'start': {'line': 88, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 109, 'character': 19}, 'start': {'line': 109, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 152, 'character': 19}, 'start': {'line': 152, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 19}, 'start': {'line': 156, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 165, 'character': 19}, 'start': {'line': 165, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 178, 'character': 19}, 'start': {'line': 178, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 19}, 'start': {'line': 416, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:11:53,719 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:53,719 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:53,720 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:53,720 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:53,720 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:53,720 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:53,720 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:53,721 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:53,721 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:11:53,744 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 75, 'character': 36}, 'start': {'line': 75, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 212, 'character': 82}, 'start': {'line': 212, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 85}, 'start': {'line': 327, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 331, 'character': 85}, 'start': {'line': 331, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 332, 'character': 99}, 'start': {'line': 332, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 341, 'character': 85}, 'start': {'line': 341, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 344, 'character': 85}, 'start': {'line': 344, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 99}, 'start': {'line': 345, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 81}, 'start': {'line': 347, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 352, 'character': 90}, 'start': {'line': 352, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 373, 'character': 85}, 'start': {'line': 373, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 444, 'character': 55}, 'start': {'line': 444, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 75, 'character': 19}, 'start': {'line': 75, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 88, 'character': 19}, 'start': {'line': 88, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 109, 'character': 19}, 'start': {'line': 109, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 152, 'character': 19}, 'start': {'line': 152, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 19}, 'start': {'line': 156, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 165, 'character': 19}, 'start': {'line': 165, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 178, 'character': 19}, 'start': {'line': 178, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 19}, 'start': {'line': 416, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 189, 'character': 28}, 'start': {'line': 189, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:11:53,744 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 75, 'character': 36}, 'start': {'line': 75, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 212, 'character': 82}, 'start': {'line': 212, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 327, 'character': 85}, 'start': {'line': 327, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 331, 'character': 85}, 'start': {'line': 331, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 332, 'character': 99}, 'start': {'line': 332, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 341, 'character': 85}, 'start': {'line': 341, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 344, 'character': 85}, 'start': {'line': 344, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 99}, 'start': {'line': 345, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 347, 'character': 81}, 'start': {'line': 347, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 352, 'character': 90}, 'start': {'line': 352, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 373, 'character': 85}, 'start': {'line': 373, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 444, 'character': 55}, 'start': {'line': 444, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 75, 'character': 19}, 'start': {'line': 75, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 80, 'character': 19}, 'start': {'line': 80, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 88, 'character': 19}, 'start': {'line': 88, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 103, 'character': 19}, 'start': {'line': 103, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 109, 'character': 19}, 'start': {'line': 109, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 152, 'character': 19}, 'start': {'line': 152, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 156, 'character': 19}, 'start': {'line': 156, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 165, 'character': 19}, 'start': {'line': 165, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 173, 'character': 19}, 'start': {'line': 173, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 178, 'character': 19}, 'start': {'line': 178, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 188, 'character': 19}, 'start': {'line': 188, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 416, 'character': 19}, 'start': {'line': 416, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 189, 'character': 28}, 'start': {'line': 189, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:11:56,139 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":119}}}' 2018-02-17 17:11:56,641 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:11:56,641 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:56,642 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:56,643 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:11:56,754 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 19}, 'start': {'line': 77, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 19}, 'start': {'line': 153, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 157, 'character': 19}, 'start': {'line': 157, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 180, 'character': 19}, 'start': {'line': 180, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 19}, 'start': {'line': 417, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:11:56,754 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:56,755 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:56,756 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:11:56,769 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 76, 'character': 36}, 'start': {'line': 76, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 82}, 'start': {'line': 213, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 328, 'character': 85}, 'start': {'line': 328, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 332, 'character': 85}, 'start': {'line': 332, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 333, 'character': 99}, 'start': {'line': 333, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 342, 'character': 85}, 'start': {'line': 342, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 85}, 'start': {'line': 345, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 99}, 'start': {'line': 346, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 348, 'character': 81}, 'start': {'line': 348, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 90}, 'start': {'line': 353, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 85}, 'start': {'line': 374, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 55}, 'start': {'line': 445, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 19}, 'start': {'line': 77, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 19}, 'start': {'line': 153, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 157, 'character': 19}, 'start': {'line': 157, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 180, 'character': 19}, 'start': {'line': 180, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 19}, 'start': {'line': 417, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 190, 'character': 28}, 'start': {'line': 190, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:11:56,769 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 76, 'character': 36}, 'start': {'line': 76, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 82}, 'start': {'line': 213, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 328, 'character': 85}, 'start': {'line': 328, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 332, 'character': 85}, 'start': {'line': 332, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 333, 'character': 99}, 'start': {'line': 333, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 342, 'character': 85}, 'start': {'line': 342, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 85}, 'start': {'line': 345, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 99}, 'start': {'line': 346, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 348, 'character': 81}, 'start': {'line': 348, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 90}, 'start': {'line': 353, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 85}, 'start': {'line': 374, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 55}, 'start': {'line': 445, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 19}, 'start': {'line': 77, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 19}, 'start': {'line': 153, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 157, 'character': 19}, 'start': {'line': 157, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 180, 'character': 19}, 'start': {'line': 180, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 19}, 'start': {'line': 417, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 190, 'character': 28}, 'start': {'line': 190, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 17:11:56,943 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":120}}}' 2018-02-17 17:11:56,946 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":120}}}' 2018-02-17 17:11:57,448 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 17:11:57,449 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:57,449 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:57,449 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:57,449 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:57,450 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:57,450 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:57,450 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:57,450 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:57,450 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 17:11:57,673 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 19}, 'start': {'line': 77, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 19}, 'start': {'line': 153, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 157, 'character': 19}, 'start': {'line': 157, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 180, 'character': 19}, 'start': {'line': 180, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 19}, 'start': {'line': 417, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}] 2018-02-17 17:11:57,674 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:57,674 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 17:11:57,674 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 17:11:57,675 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:57,675 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:57,675 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 17:11:57,675 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 17:11:57,676 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 17:11:57,676 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 17:11:57,699 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'end': {'line': 76, 'character': 36}, 'start': {'line': 76, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 82}, 'start': {'line': 213, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 328, 'character': 85}, 'start': {'line': 328, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 332, 'character': 85}, 'start': {'line': 332, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 333, 'character': 99}, 'start': {'line': 333, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 342, 'character': 85}, 'start': {'line': 342, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 85}, 'start': {'line': 345, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 99}, 'start': {'line': 346, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 348, 'character': 81}, 'start': {'line': 348, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 90}, 'start': {'line': 353, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 85}, 'start': {'line': 374, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 55}, 'start': {'line': 445, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}], [{'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 19}, 'start': {'line': 77, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 19}, 'start': {'line': 153, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 157, 'character': 19}, 'start': {'line': 157, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 180, 'character': 19}, 'start': {'line': 180, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 19}, 'start': {'line': 417, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}], [{'range': {'end': {'line': 190, 'character': 28}, 'start': {'line': 190, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}], []] [hook] 2018-02-17 17:11:57,699 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'range': {'end': {'line': 76, 'character': 36}, 'start': {'line': 76, 'character': 0}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 213, 'character': 82}, 'start': {'line': 213, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 328, 'character': 85}, 'start': {'line': 328, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 332, 'character': 85}, 'start': {'line': 332, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 333, 'character': 99}, 'start': {'line': 333, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 342, 'character': 85}, 'start': {'line': 342, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 345, 'character': 85}, 'start': {'line': 345, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 346, 'character': 99}, 'start': {'line': 346, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 348, 'character': 81}, 'start': {'line': 348, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 353, 'character': 90}, 'start': {'line': 353, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 374, 'character': 85}, 'start': {'line': 374, 'character': 79}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 445, 'character': 55}, 'start': {'line': 445, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle'}, {'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 76, 'character': 19}, 'start': {'line': 76, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 77, 'character': 19}, 'start': {'line': 77, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 81, 'character': 19}, 'start': {'line': 81, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 89, 'character': 19}, 'start': {'line': 89, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 104, 'character': 19}, 'start': {'line': 104, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 105, 'character': 19}, 'start': {'line': 105, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 110, 'character': 19}, 'start': {'line': 110, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 153, 'character': 19}, 'start': {'line': 153, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 157, 'character': 19}, 'start': {'line': 157, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 179, 'character': 19}, 'start': {'line': 179, 'character': 0}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 180, 'character': 19}, 'start': {'line': 180, 'character': 0}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'severity': 2, 'range': {'end': {'line': 417, 'character': 19}, 'start': {'line': 417, 'character': 0}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle'}, {'range': {'end': {'line': 190, 'character': 28}, 'start': {'line': 190, 'character': 4}}, 'severity': 2, 'message': 'Cyclomatic complexity too high: 20 (threshold 15)', 'source': 'mccabe'}]} 2018-02-17 23:12:11,958 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 23:12:11,959 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-17 23:12:11,960 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off', 'capabilities': {}, 'initializationOptions': {}, 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-17 23:12:12,166 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 23:12:12,166 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 23:12:12,167 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None config: workspace: 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None config: workspace: 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None config: workspace: 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 23:12:12,168 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None config: workspace: 2018-02-17 23:12:12,169 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 23:12:12,169 UTC - INFO - pyls.python_ls - Server capabilities: {'definitionProvider': True, 'textDocumentSync': 2, 'codeActionProvider': True, 'renameProvider': True, 'hoverProvider': True, 'documentSymbolProvider': True, 'experimental': {}, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'documentFormattingProvider': True, 'referencesProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'executeCommandProvider': {'commands': []}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentRangeFormattingProvider': True} 2018-02-17 23:12:12,189 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-17 23:12:12,191 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:12:12,191 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 23:12:12,691 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:12:12,810 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 104}, 'start': {'character': 0, 'line': 104}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 105}, 'start': {'character': 0, 'line': 105}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 153}, 'start': {'character': 0, 'line': 153}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 166}, 'start': {'character': 0, 'line': 166}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:12:12,829 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:12:12,829 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:12:12,829 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:12:12,830 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:12:12,830 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:12:12,831 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:12:12,831 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:12:12,831 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:12:12,837 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:12:12,837 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:12:12,838 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:12:12,838 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:12:12,838 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:12:12,838 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:12:12,839 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:12:12,839 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:12:12,839 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:12:12,978 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 104}, 'start': {'character': 0, 'line': 104}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 105}, 'start': {'character': 0, 'line': 105}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 153}, 'start': {'character': 0, 'line': 153}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 166}, 'start': {'character': 0, 'line': 166}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 190}, 'start': {'character': 4, 'line': 190}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 213}, 'start': {'character': 79, 'line': 213}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 328}, 'start': {'character': 79, 'line': 328}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 332}, 'start': {'character': 79, 'line': 332}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 333}, 'start': {'character': 79, 'line': 333}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 345}, 'start': {'character': 79, 'line': 345}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 445}, 'start': {'character': 55, 'line': 445}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:12:12,979 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 104}, 'start': {'character': 0, 'line': 104}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 105}, 'start': {'character': 0, 'line': 105}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 153}, 'start': {'character': 0, 'line': 153}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 166}, 'start': {'character': 0, 'line': 166}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 190}, 'start': {'character': 4, 'line': 190}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 213}, 'start': {'character': 79, 'line': 213}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 328}, 'start': {'character': 79, 'line': 328}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 332}, 'start': {'character': 79, 'line': 332}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 333}, 'start': {'character': 79, 'line': 333}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 345}, 'start': {'character': 79, 'line': 345}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 445}, 'start': {'character': 55, 'line': 445}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:14:08,829 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n pass\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 23:14:09,330 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:14:09,372 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 111}, 'start': {'character': 0, 'line': 111}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 116}, 'start': {'character': 0, 'line': 116}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 159}, 'start': {'character': 0, 'line': 159}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 185}, 'start': {'character': 0, 'line': 185}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 186}, 'start': {'character': 0, 'line': 186}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:09,395 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:14:09,396 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:09,396 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:14:09,399 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:09,400 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:14:09,482 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 111}, 'start': {'character': 0, 'line': 111}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 116}, 'start': {'character': 0, 'line': 116}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 159}, 'start': {'character': 0, 'line': 159}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 185}, 'start': {'character': 0, 'line': 185}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 186}, 'start': {'character': 0, 'line': 186}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 196}, 'start': {'character': 4, 'line': 196}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 219}, 'start': {'character': 79, 'line': 219}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 334}, 'start': {'character': 79, 'line': 334}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 339}, 'start': {'character': 79, 'line': 339}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 354}, 'start': {'character': 79, 'line': 354}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 451}, 'start': {'character': 55, 'line': 451}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:14:09,482 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 111}, 'start': {'character': 0, 'line': 111}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 116}, 'start': {'character': 0, 'line': 116}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 159}, 'start': {'character': 0, 'line': 159}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 185}, 'start': {'character': 0, 'line': 185}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 186}, 'start': {'character': 0, 'line': 186}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 196}, 'start': {'character': 4, 'line': 196}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 219}, 'start': {'character': 79, 'line': 219}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 334}, 'start': {'character': 79, 'line': 334}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 339}, 'start': {'character': 79, 'line': 339}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 354}, 'start': {'character': 79, 'line': 354}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 451}, 'start': {'character': 55, 'line': 451}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:14:09,501 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n pass\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 23:14:09,504 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 23:14:10,005 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:14:10,106 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 111}, 'start': {'character': 0, 'line': 111}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 116}, 'start': {'character': 0, 'line': 116}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 159}, 'start': {'character': 0, 'line': 159}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 185}, 'start': {'character': 0, 'line': 185}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 186}, 'start': {'character': 0, 'line': 186}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:14:10,125 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:10,126 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:14:10,126 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:14:10,126 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:10,126 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:10,127 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:10,127 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:14:10,127 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:10,127 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:14:10,133 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:10,133 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:14:10,134 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:14:10,134 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:10,134 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:10,134 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:14:10,134 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:14:10,135 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:14:10,135 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:14:10,271 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 111}, 'start': {'character': 0, 'line': 111}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 116}, 'start': {'character': 0, 'line': 116}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 159}, 'start': {'character': 0, 'line': 159}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 185}, 'start': {'character': 0, 'line': 185}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 186}, 'start': {'character': 0, 'line': 186}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 196}, 'start': {'character': 4, 'line': 196}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 219}, 'start': {'character': 79, 'line': 219}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 334}, 'start': {'character': 79, 'line': 334}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 339}, 'start': {'character': 79, 'line': 339}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 354}, 'start': {'character': 79, 'line': 354}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 451}, 'start': {'character': 55, 'line': 451}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:14:10,271 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 110}, 'start': {'character': 0, 'line': 110}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 111}, 'start': {'character': 0, 'line': 111}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 116}, 'start': {'character': 0, 'line': 116}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 159}, 'start': {'character': 0, 'line': 159}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 185}, 'start': {'character': 0, 'line': 185}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 186}, 'start': {'character': 0, 'line': 186}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 196}, 'start': {'character': 4, 'line': 196}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 219}, 'start': {'character': 79, 'line': 219}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 334}, 'start': {'character': 79, 'line': 334}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 339}, 'start': {'character': 79, 'line': 339}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 354}, 'start': {'character': 79, 'line': 354}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 451}, 'start': {'character': 55, 'line': 451}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:15:48,209 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-17 23:15:48,710 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:15:48,764 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:15:48,774 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:48,774 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:48,775 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:15:48,780 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:48,780 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:15:48,780 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:15:48,780 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:48,780 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:48,781 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:48,781 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:15:48,781 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:48,781 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:15:48,855 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 33, 'line': 96}, 'start': {'character': 11, 'line': 96}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 50, 'line': 100}, 'start': {'character': 16, 'line': 100}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 41, 'line': 102}, 'start': {'character': 16, 'line': 102}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 104}, 'start': {'character': 16, 'line': 104}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:15:48,855 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 33, 'line': 96}, 'start': {'character': 11, 'line': 96}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 50, 'line': 100}, 'start': {'character': 16, 'line': 100}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 41, 'line': 102}, 'start': {'character': 16, 'line': 102}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 104}, 'start': {'character': 16, 'line': 104}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:15:49,172 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 23:15:49,174 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 23:15:49,675 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:15:49,782 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:15:49,801 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:49,802 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:15:49,802 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:15:49,802 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:49,802 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:49,802 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:49,803 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:15:49,803 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:49,803 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:15:49,810 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:49,810 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:15:49,810 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:15:49,811 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:49,811 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:49,811 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:15:49,811 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:15:49,812 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:15:49,812 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:15:49,953 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 33, 'line': 96}, 'start': {'character': 11, 'line': 96}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 50, 'line': 100}, 'start': {'character': 16, 'line': 100}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 41, 'line': 102}, 'start': {'character': 16, 'line': 102}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 104}, 'start': {'character': 16, 'line': 104}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:15:49,953 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 33, 'line': 96}, 'start': {'character': 11, 'line': 96}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 50, 'line': 100}, 'start': {'character': 16, 'line': 100}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 41, 'line': 102}, 'start': {'character': 16, 'line': 102}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 104}, 'start': {'character': 16, 'line': 104}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:16:02,927 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-17 23:16:03,428 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:16:03,473 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:16:03,481 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:03,481 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:03,482 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:16:03,485 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:03,485 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:03,485 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:03,485 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:03,486 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:03,486 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:03,486 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:03,486 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:03,486 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:16:03,549 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:16:03,549 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:16:03,615 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 23:16:03,617 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 23:16:04,118 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:16:04,221 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:16:04,240 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:04,240 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:04,240 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:04,240 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:04,241 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:04,241 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:04,241 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:04,241 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:04,242 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:16:04,248 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:04,248 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:04,248 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:04,248 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:04,248 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:04,249 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:04,249 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:04,249 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:04,249 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:16:04,385 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:16:04,385 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 92}, 'start': {'character': 0, 'line': 92}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 118}, 'start': {'character': 0, 'line': 118}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 124}, 'start': {'character': 0, 'line': 124}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 193}, 'start': {'character': 0, 'line': 193}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 204}, 'start': {'character': 4, 'line': 204}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 227}, 'start': {'character': 79, 'line': 227}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 459}, 'start': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:16:18,862 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.collecting_pozn = False\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-17 23:16:19,364 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:16:19,408 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 120}, 'start': {'character': 0, 'line': 120}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 125}, 'start': {'character': 0, 'line': 125}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:16:19,416 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:19,416 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:19,416 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:19,416 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:19,417 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:19,417 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:19,417 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:19,417 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:19,417 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:19,421 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:16:19,486 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 120}, 'start': {'character': 0, 'line': 120}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 125}, 'start': {'character': 0, 'line': 125}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:16:19,486 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 120}, 'start': {'character': 0, 'line': 120}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 125}, 'start': {'character': 0, 'line': 125}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:16:19,534 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.collecting_pozn = False\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-17 23:16:19,536 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-17 23:16:20,038 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:16:20,142 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 120}, 'start': {'character': 0, 'line': 120}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 125}, 'start': {'character': 0, 'line': 125}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:16:20,161 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:20,161 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:20,161 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:20,161 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:20,161 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:20,162 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:20,162 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:20,162 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:20,162 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:16:20,170 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:20,170 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:16:20,170 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:16:20,170 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:20,171 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:20,171 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:16:20,171 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:16:20,171 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:16:20,172 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:16:20,314 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 120}, 'start': {'character': 0, 'line': 120}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 125}, 'start': {'character': 0, 'line': 125}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:16:20,315 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 119}, 'start': {'character': 0, 'line': 119}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 120}, 'start': {'character': 0, 'line': 120}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 125}, 'start': {'character': 0, 'line': 125}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 189}, 'start': {'character': 0, 'line': 189}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 194}, 'start': {'character': 0, 'line': 194}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 195}, 'start': {'character': 0, 'line': 195}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:17:30,450 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-17 23:17:30,951 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:17:31,005 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:17:31,014 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:31,014 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:17:31,014 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:17:31,015 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:31,015 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:31,015 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:31,015 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:17:31,015 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:31,015 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:17:31,018 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:31,019 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:17:31,089 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:17:31,089 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:17:31,377 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-17 23:17:31,379 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-17 23:17:31,879 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:17:31,993 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:17:32,003 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:32,004 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:17:32,007 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:32,007 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:17:32,007 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:17:32,007 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:32,007 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:32,008 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:17:32,008 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:17:32,008 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:17:32,008 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:17:32,083 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:17:32,083 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 179}, 'start': {'character': 0, 'line': 179}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 205}, 'start': {'character': 4, 'line': 205}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 228}, 'start': {'character': 79, 'line': 228}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 357}, 'start': {'character': 79, 'line': 357}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 460}, 'start': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:18:06,272 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\nEvent = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-17 23:18:06,773 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:18:06,823 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:06,834 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:06,835 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:06,835 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:18:06,838 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:06,838 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:06,839 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:18:06,911 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:18:06,911 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:18:10,487 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\nEvent = collections.namedtuple(\'Event\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-17 23:18:10,989 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:18:11,033 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:11,042 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:11,043 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:11,046 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:18:11,111 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:18:11,111 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:18:21,664 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\nEvent = collections.namedtuple(\'Event\', \'name content attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-17 23:18:22,165 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:18:22,210 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:18:22,218 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:22,218 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:22,218 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:22,219 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:22,219 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:22,219 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:22,219 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:22,219 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:22,219 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:22,223 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:22,224 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:18:22,286 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:18:22,286 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:18:22,395 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\nEvent = collections.namedtuple(\'Event\', \'name content attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-17 23:18:22,397 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-17 23:18:22,898 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:18:23,003 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:18:23,020 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:23,021 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:23,021 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:23,021 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:23,021 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:23,022 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:23,022 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:23,022 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:23,022 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:18:23,029 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:23,030 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:18:23,030 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:18:23,030 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:23,030 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:23,031 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:18:23,031 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:18:23,031 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:18:23,031 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:18:23,170 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:18:23,170 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:19:23,040 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-17 23:19:23,541 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:19:23,611 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:19:23,619 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:23,620 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:19:23,622 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:23,622 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:23,623 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:19:23,685 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:19:23,685 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:19:23,975 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-17 23:19:23,977 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-17 23:19:24,481 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:19:24,587 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:19:24,605 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:24,605 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:19:24,606 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:19:24,606 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:24,606 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:24,606 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:24,606 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:19:24,607 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:24,607 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:19:24,613 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:24,613 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:19:24,613 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:19:24,613 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:24,613 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:24,614 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:19:24,614 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:19:24,614 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:19:24,614 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:19:24,756 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:19:24,756 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 180}, 'start': {'character': 0, 'line': 180}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 206}, 'start': {'character': 4, 'line': 206}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 229}, 'start': {'character': 79, 'line': 229}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 344}, 'start': {'character': 79, 'line': 344}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 461}, 'start': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:20:36,626 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n pass\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-17 23:20:37,128 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:20:37,173 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 206}, 'start': {'character': 0, 'line': 206}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:20:37,183 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:20:37,183 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:20:37,183 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:20:37,184 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:20:37,184 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:20:37,184 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:20:37,184 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:20:37,184 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:20:37,184 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:20:37,187 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:20:37,188 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:20:37,258 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 206}, 'start': {'character': 0, 'line': 206}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 207}, 'start': {'character': 4, 'line': 207}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 230}, 'start': {'character': 79, 'line': 230}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 345}, 'start': {'character': 79, 'line': 345}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 462}, 'start': {'character': 55, 'line': 462}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:20:37,258 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 206}, 'start': {'character': 0, 'line': 206}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 207}, 'start': {'character': 4, 'line': 207}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 230}, 'start': {'character': 79, 'line': 230}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 345}, 'start': {'character': 79, 'line': 345}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 349}, 'start': {'character': 79, 'line': 349}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 359}, 'start': {'character': 79, 'line': 359}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 462}, 'start': {'character': 55, 'line': 462}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:21:17,474 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(Event(event_type, name, content,\\n attrs))\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":19}}}' 2018-02-17 23:21:17,976 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:21:18,023 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:21:18,033 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:18,034 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:21:18,037 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:18,037 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:21:18,037 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:21:18,037 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:18,037 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:18,037 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:18,038 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:21:18,038 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:18,038 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:21:18,105 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E128', 'range': {'end': {'character': 24, 'line': 187}, 'start': {'character': 16, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:21:18,105 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E128', 'range': {'end': {'character': 24, 'line': 187}, 'start': {'character': 16, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:21:23,879 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-17 23:21:24,380 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:21:24,424 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:21:24,432 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:24,433 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:21:24,437 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:24,437 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:21:24,437 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:21:24,437 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:24,437 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:24,438 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:24,438 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:21:24,438 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:24,438 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:21:24,502 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:21:24,502 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:21:24,639 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-17 23:21:24,641 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-17 23:21:25,142 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:21:25,250 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:21:25,268 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:25,268 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:21:25,269 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:21:25,269 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:25,269 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:25,269 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:25,270 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:21:25,270 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:25,270 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:21:25,278 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:25,278 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:21:25,278 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:21:25,278 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:25,279 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:25,279 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:21:25,279 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:21:25,279 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:21:25,280 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:21:25,364 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:21:25,364 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:22:03,524 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-17 23:22:03,526 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-17 23:22:04,026 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:22:04,132 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:22:04,144 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:22:04,145 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:22:04,145 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:22:04,148 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:22:04,148 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:22:04,148 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:22:04,148 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:22:04,148 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:22:04,149 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:22:04,149 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:22:04,149 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:22:04,149 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:22:04,222 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:22:04,222 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 181}, 'start': {'character': 0, 'line': 181}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 231}, 'start': {'character': 79, 'line': 231}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 346}, 'start': {'character': 79, 'line': 346}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 350}, 'start': {'character': 79, 'line': 350}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 463}, 'start': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:23:11,081 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":23}}}' 2018-02-17 23:23:11,582 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:23:11,627 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:23:11,635 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:11,636 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:23:11,639 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:11,639 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:11,640 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:23:11,704 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:23:11,705 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:23:11,856 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == \'startElement\':\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-17 23:23:11,866 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-17 23:23:12,372 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:23:12,447 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:23:12,463 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:12,464 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:12,464 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:12,464 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:12,464 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:12,465 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:12,465 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:12,465 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:12,465 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:23:12,472 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:12,473 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:12,473 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:12,473 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:12,474 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:12,474 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:12,474 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:12,475 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:12,475 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:23:12,610 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:23:12,610 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:23:44,096 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement\\n self.ds.startElement(name, attrs)\\n elif event_type == \'endElement\':\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-17 23:23:44,598 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:23:44,602 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:44,603 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:44,604 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:23:44,604 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:44,604 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:44,604 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:44,604 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:44,604 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:44,605 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:44,605 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:44,605 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:44,605 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:23:44,667 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:23:44,667 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:23:54,441 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == \'characters\':\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-17 23:23:54,942 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:23:54,947 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:23:54,948 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:54,948 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:54,948 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:54,948 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:54,948 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:54,948 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:54,949 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:54,949 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:54,949 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:23:54,949 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:23:54,950 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:23:54,951 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:23:55,016 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:23:55,016 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:24:01,640 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":27}}}' 2018-02-17 23:24:02,142 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:24:02,146 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,147 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:24:02,148 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,148 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,148 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:02,148 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,148 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,148 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,149 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,149 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,149 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:24:02,212 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:24:02,212 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:24:02,416 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-17 23:24:02,418 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-17 23:24:02,919 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:24:02,926 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:24:02,928 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,928 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,929 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:02,929 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,930 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,930 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,930 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,930 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,931 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:24:02,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,932 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,932 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:02,932 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,932 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,933 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:02,933 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:02,933 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:02,933 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:24:03,080 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:24:03,080 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 106, 'line': 190}, 'start': {'character': 53, 'line': 190}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 50, 'line': 191}, 'start': {'character': 16, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:24:22,129 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":29}}}' 2018-02-17 23:24:22,631 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:24:22,675 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:24:22,684 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:22,684 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:22,684 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:22,684 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:22,684 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:22,685 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:22,685 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:22,685 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:22,685 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:24:22,688 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:22,689 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:24:22,758 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:24:22,758 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:24:22,847 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":30}}}' 2018-02-17 23:24:22,852 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":30}}}' 2018-02-17 23:24:23,353 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:24:23,458 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:24:23,476 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:23,477 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:23,477 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:23,477 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:23,477 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:23,478 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:23,478 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:23,478 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:23,478 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:24:23,485 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:23,485 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:24:23,485 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:24:23,486 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:23,486 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:23,486 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:24:23,486 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:24:23,486 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:24:23,487 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:24:23,626 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:24:23,627 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 464}, 'start': {'character': 55, 'line': 464}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:00,362 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collecting_pozn[:]\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":31}}}' 2018-02-17 23:26:00,864 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:00,917 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:00,928 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:00,928 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:00,928 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:00,928 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:00,928 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:00,928 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:00,929 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:00,929 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:00,929 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:00,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:00,933 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:00,934 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:01,000 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:01,000 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:01,062 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collecting_pozn[:]\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":32}}}' 2018-02-17 23:26:01,064 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":32}}}' 2018-02-17 23:26:01,565 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:01,670 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:01,735 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:01,736 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:01,736 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:01,736 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:01,736 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:01,737 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:01,737 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:01,737 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:01,737 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:01,744 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:01,744 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:01,744 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:01,744 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:01,745 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:01,745 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:01,745 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:01,745 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:01,745 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:01,889 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:01,889 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:14,435 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-17 23:26:14,937 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:14,985 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:14,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:14,994 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:14,994 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:14,994 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:14,994 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:14,995 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:14,995 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:14,995 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:14,995 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:14,999 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:14,999 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:14,999 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:14,999 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:14,999 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:14,999 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:15,000 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:15,000 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:15,000 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:15,066 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:15,066 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:15,392 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":34}}}' 2018-02-17 23:26:15,394 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":34}}}' 2018-02-17 23:26:15,895 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:16,006 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:16,025 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:16,025 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:16,025 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:16,025 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:16,026 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:16,026 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:16,026 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:16,026 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:16,027 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:16,034 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:16,034 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:16,034 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:16,035 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:16,035 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:16,035 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:16,035 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:16,036 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:16,036 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:16,178 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:16,178 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 466}, 'start': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:35,514 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n Pride and Prejudice and Zombies\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":35}}}' 2018-02-17 23:26:36,015 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:36,059 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:36,068 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:36,072 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:36,072 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:36,072 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:36,072 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:36,072 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:36,073 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:36,073 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:36,073 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:36,073 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:36,137 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 460}, 'start': {'character': 12, 'line': 460}}, 'source': 'pyflakes', 'message': "undefined name 'Pride'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 460}, 'start': {'character': 22, 'line': 460}}, 'source': 'pyflakes', 'message': "undefined name 'Prejudice'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 460}, 'start': {'character': 36, 'line': 460}}, 'source': 'pyflakes', 'message': "undefined name 'Zombies'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 467}, 'start': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:36,138 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 460}, 'start': {'character': 12, 'line': 460}}, 'source': 'pyflakes', 'message': "undefined name 'Pride'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 460}, 'start': {'character': 22, 'line': 460}}, 'source': 'pyflakes', 'message': "undefined name 'Prejudice'"}, {'severity': 2, 'range': {'end': {'character': 44, 'line': 460}, 'start': {'character': 36, 'line': 460}}, 'source': 'pyflakes', 'message': "undefined name 'Zombies'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 467}, 'start': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:44,617 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":36}}}' 2018-02-17 23:26:45,119 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:45,164 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,173 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:45,176 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,177 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:45,242 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 467}, 'start': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:45,242 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 467}, 'start': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:26:45,319 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-17 23:26:45,320 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-17 23:26:45,822 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:26:45,934 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:26:45,960 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,961 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,961 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:45,961 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,961 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,962 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,962 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,962 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,962 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:26:45,969 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,969 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,969 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:26:45,970 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,970 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,970 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:26:45,970 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:26:45,971 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:26:45,971 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:26:46,114 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 467}, 'start': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:26:46,114 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 347}, 'start': {'character': 79, 'line': 347}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 351}, 'start': {'character': 79, 'line': 351}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 372}, 'start': {'character': 79, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 393}, 'start': {'character': 79, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 467}, 'start': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:27:12,705 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = None\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":38}}}' 2018-02-17 23:27:13,207 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:27:13,252 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:13,262 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:27:13,265 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:13,266 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:27:13,331 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:27:13,331 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:27:13,429 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = None\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-17 23:27:13,431 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-17 23:27:13,932 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:27:14,043 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:27:14,062 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:14,062 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:14,062 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:14,063 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:14,063 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:14,063 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:14,063 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:14,064 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:14,064 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:27:14,071 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:14,071 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:14,072 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:14,072 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:14,072 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:14,072 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:14,073 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:14,073 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:14,073 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:27:14,215 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:27:14,215 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:27:58,555 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":40}}}' 2018-02-17 23:27:59,058 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:27:59,107 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:27:59,116 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,117 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:27:59,121 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,121 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,122 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:27:59,191 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:27:59,191 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:27:59,267 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n# \\n# \\n\\n# \\n\\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":41}}}' 2018-02-17 23:27:59,268 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":41}}}' 2018-02-17 23:27:59,769 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:27:59,886 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:27:59,905 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,906 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,906 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:59,906 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,906 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,906 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,907 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,907 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,907 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:27:59,915 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,915 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,915 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:27:59,915 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,915 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,916 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:27:59,916 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:27:59,916 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:27:59,916 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:28:00,053 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:28:00,053 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 20 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 348}, 'start': {'character': 79, 'line': 348}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 353}, 'start': {'character': 79, 'line': 353}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 468}, 'start': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:29:16,713 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":42}}}' 2018-02-17 23:29:17,214 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:29:17,261 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:29:17,270 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:17,270 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:29:17,270 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:29:17,270 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:17,271 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:17,271 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:17,271 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:29:17,271 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:17,271 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:29:17,274 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:17,274 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:29:17,274 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:29:17,274 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:17,274 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:17,275 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:17,275 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:29:17,275 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:17,275 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:29:17,339 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 355}, 'start': {'character': 79, 'line': 355}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 458}, 'start': {'character': 55, 'line': 458}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:29:17,339 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 355}, 'start': {'character': 79, 'line': 355}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 458}, 'start': {'character': 55, 'line': 458}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:29:17,456 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-17 23:29:17,457 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-17 23:29:17,958 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:29:18,013 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:29:18,023 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:18,023 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:29:18,023 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:29:18,024 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:18,024 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:18,024 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:18,024 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:29:18,024 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:18,024 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:18,028 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:29:18,029 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:18,029 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:29:18,101 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 355}, 'start': {'character': 79, 'line': 355}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 458}, 'start': {'character': 55, 'line': 458}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:29:18,101 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 355}, 'start': {'character': 79, 'line': 355}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 458}, 'start': {'character': 55, 'line': 458}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:29:38,822 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":44}}}' 2018-02-17 23:29:38,826 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":44}}}' 2018-02-17 23:29:39,328 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:29:39,432 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:29:39,452 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:39,453 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:29:39,453 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:29:39,453 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:39,453 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:39,453 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:39,454 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:29:39,454 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:39,454 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:29:39,460 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:39,461 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:29:39,461 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:29:39,461 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:39,461 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:39,461 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:29:39,462 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:29:39,462 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:29:39,462 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:29:39,608 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 355}, 'start': {'character': 79, 'line': 355}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 458}, 'start': {'character': 55, 'line': 458}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:29:39,608 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 182}, 'start': {'character': 0, 'line': 182}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 209}, 'start': {'character': 4, 'line': 209}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 232}, 'start': {'character': 79, 'line': 232}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 338}, 'start': {'character': 79, 'line': 338}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 342}, 'start': {'character': 79, 'line': 342}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 343}, 'start': {'character': 79, 'line': 343}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 352}, 'start': {'character': 79, 'line': 352}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 355}, 'start': {'character': 79, 'line': 355}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 356}, 'start': {'character': 79, 'line': 356}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 358}, 'start': {'character': 79, 'line': 358}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 458}, 'start': {'character': 55, 'line': 458}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:30:30,866 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":45}}}' 2018-02-17 23:30:31,367 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:30:31,371 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:30:31,372 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:30:31,372 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:30:31,372 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:30:31,372 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:30:31,373 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:30:31,373 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:30:31,373 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:30:31,373 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:30:31,373 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:30:31,374 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:30:31,409 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 77, 'line': 183}, 'start': {'character': 5, 'line': 183}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'character': 35, 'line': 182}, 'start': {'character': 2, 'line': 182}}, 'source': 'pycodestyle', 'message': 'E114 indentation is not a multiple of four (comment)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 8, 'line': 183}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 22, 'line': 183}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 40, 'line': 183}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 70, 'line': 183}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 17, 'line': 184}, 'start': {'character': 8, 'line': 184}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 17, 'line': 184}, 'start': {'character': 15, 'line': 184}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 6, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 6, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 10, 'line': 185}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 20, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 52, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 8, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 12, 'line': 186}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 26, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 47, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 72, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 12, 'line': 187}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 26, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 43, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 69, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 12, 'line': 188}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 28, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 80, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 18, 'line': 189}, 'start': {'character': 6, 'line': 189}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 18, 'line': 189}, 'start': {'character': 11, 'line': 189}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 18, 'line': 189}, 'start': {'character': 16, 'line': 189}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 22, 'line': 190}, 'start': {'character': 6, 'line': 190}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 22, 'line': 190}, 'start': {'character': 10, 'line': 190}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 22, 'line': 190}, 'start': {'character': 20, 'line': 190}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 8, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 12, 'line': 191}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 26, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 44, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 72, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 12, 'line': 192}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 26, 'line': 192}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 48, 'line': 192}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 77, 'line': 192}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 12, 'line': 193}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 26, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 47, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 86, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 37, 'line': 194}, 'start': {'character': 12, 'line': 194}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 37, 'line': 194}, 'start': {'character': 26, 'line': 194}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 10, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 10, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 16, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 64, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 12, 'line': 196}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 28, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 80, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 23, 'line': 197}, 'start': {'character': 6, 'line': 197}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 23, 'line': 197}, 'start': {'character': 11, 'line': 197}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 23, 'line': 197}, 'start': {'character': 21, 'line': 197}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 18, 'line': 198}, 'start': {'character': 9, 'line': 198}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 18, 'line': 198}, 'start': {'character': 16, 'line': 198}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E901', 'range': {'end': {'character': 18, 'line': 199}, 'start': {'character': 2, 'line': 199}}, 'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level'}]] [hook] 2018-02-17 23:30:31,409 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 77, 'line': 183}, 'start': {'character': 5, 'line': 183}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E114', 'range': {'end': {'character': 35, 'line': 182}, 'start': {'character': 2, 'line': 182}}, 'source': 'pycodestyle', 'message': 'E114 indentation is not a multiple of four (comment)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 8, 'line': 183}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 22, 'line': 183}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 40, 'line': 183}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 72, 'line': 183}, 'start': {'character': 70, 'line': 183}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 17, 'line': 184}, 'start': {'character': 8, 'line': 184}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 17, 'line': 184}, 'start': {'character': 15, 'line': 184}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 6, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 6, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 10, 'line': 185}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 20, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 54, 'line': 185}, 'start': {'character': 52, 'line': 185}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 8, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 12, 'line': 186}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 26, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 47, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 186}, 'start': {'character': 72, 'line': 186}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 12, 'line': 187}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 26, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 43, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 71, 'line': 187}, 'start': {'character': 69, 'line': 187}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 12, 'line': 188}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 28, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 80, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 18, 'line': 189}, 'start': {'character': 6, 'line': 189}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 18, 'line': 189}, 'start': {'character': 11, 'line': 189}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 18, 'line': 189}, 'start': {'character': 16, 'line': 189}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 22, 'line': 190}, 'start': {'character': 6, 'line': 190}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 22, 'line': 190}, 'start': {'character': 10, 'line': 190}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 22, 'line': 190}, 'start': {'character': 20, 'line': 190}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 8, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 12, 'line': 191}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 26, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 44, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 74, 'line': 191}, 'start': {'character': 72, 'line': 191}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 12, 'line': 192}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 26, 'line': 192}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 48, 'line': 192}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 79, 'line': 192}, 'start': {'character': 77, 'line': 192}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 12, 'line': 193}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 26, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 47, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 86, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 37, 'line': 194}, 'start': {'character': 12, 'line': 194}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 37, 'line': 194}, 'start': {'character': 26, 'line': 194}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 10, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E113', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 10, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 16, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 66, 'line': 195}, 'start': {'character': 64, 'line': 195}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 12, 'line': 196}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 28, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 80, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E111', 'range': {'end': {'character': 23, 'line': 197}, 'start': {'character': 6, 'line': 197}}, 'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 23, 'line': 197}, 'start': {'character': 11, 'line': 197}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 23, 'line': 197}, 'start': {'character': 21, 'line': 197}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E231', 'range': {'end': {'character': 18, 'line': 198}, 'start': {'character': 9, 'line': 198}}, 'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'"}, {'severity': 2, 'code': 'E225', 'range': {'end': {'character': 18, 'line': 198}, 'start': {'character': 16, 'line': 198}}, 'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator'}, {'severity': 2, 'code': 'E901', 'range': {'end': {'character': 18, 'line': 199}, 'start': {'character': 2, 'line': 199}}, 'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level'}]} 2018-02-17 23:31:03,898 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(refKniha):\\n pass\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-17 23:31:04,400 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:31:04,447 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 230}, 'start': {'character': 0, 'line': 230}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:31:04,483 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:04,483 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:04,483 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:04,483 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:04,483 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:04,484 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:04,484 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:04,484 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:04,484 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:31:04,487 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:04,487 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:04,487 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:04,487 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:04,487 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:04,488 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:04,488 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:04,488 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:04,488 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:31:04,561 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 230}, 'start': {'character': 0, 'line': 230}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 231}, 'start': {'character': 4, 'line': 231}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 254}, 'start': {'character': 79, 'line': 254}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 406}, 'start': {'character': 79, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 480}, 'start': {'character': 55, 'line': 480}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:31:04,561 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 230}, 'start': {'character': 0, 'line': 230}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 231}, 'start': {'character': 4, 'line': 231}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 254}, 'start': {'character': 79, 'line': 254}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 406}, 'start': {'character': 79, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 480}, 'start': {'character': 55, 'line': 480}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:31:04,615 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(refKniha):\\n pass\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-17 23:31:04,618 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-17 23:31:05,119 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:31:05,186 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 230}, 'start': {'character': 0, 'line': 230}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:31:05,197 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:05,197 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:05,197 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:05,197 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:05,197 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:05,197 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:05,198 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:05,198 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:05,198 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:31:05,201 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:05,201 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:05,201 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:05,202 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:05,202 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:05,202 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:05,202 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:05,202 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:05,202 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:31:05,274 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 230}, 'start': {'character': 0, 'line': 230}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 231}, 'start': {'character': 4, 'line': 231}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 254}, 'start': {'character': 79, 'line': 254}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 406}, 'start': {'character': 79, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 480}, 'start': {'character': 55, 'line': 480}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:31:05,275 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 204}, 'start': {'character': 0, 'line': 204}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 230}, 'start': {'character': 0, 'line': 230}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 231}, 'start': {'character': 4, 'line': 231}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 254}, 'start': {'character': 79, 'line': 254}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 360}, 'start': {'character': 79, 'line': 360}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 406}, 'start': {'character': 79, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 480}, 'start': {'character': 55, 'line': 480}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:31:29,811 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n\\n pass\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":48}}}' 2018-02-17 23:31:30,313 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:31:30,365 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 231}, 'start': {'character': 0, 'line': 231}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:31:30,375 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:30,375 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:30,376 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:31:30,381 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:30,381 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:30,381 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:30,381 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:30,381 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:30,381 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:30,382 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:30,382 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:30,382 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:31:30,453 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 231}, 'start': {'character': 0, 'line': 231}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 232}, 'start': {'character': 4, 'line': 232}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 255}, 'start': {'character': 79, 'line': 255}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 407}, 'start': {'character': 79, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 481}, 'start': {'character': 55, 'line': 481}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:31:30,453 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 205}, 'start': {'character': 0, 'line': 205}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 231}, 'start': {'character': 0, 'line': 231}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 232}, 'start': {'character': 4, 'line': 232}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 255}, 'start': {'character': 79, 'line': 255}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 407}, 'start': {'character': 79, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 481}, 'start': {'character': 55, 'line': 481}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:31:41,771 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = pass\\n pass\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":49}}}' 2018-02-17 23:31:42,273 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:31:42,277 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:42,278 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:42,279 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:31:42,279 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:42,279 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:42,279 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:42,279 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:42,279 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:42,280 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:42,280 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:42,280 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:42,280 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:31:42,346 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 255}, 'start': {'character': 79, 'line': 255}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 407}, 'start': {'character': 79, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 481}, 'start': {'character': 55, 'line': 481}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:31:42,347 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 255}, 'start': {'character': 79, 'line': 255}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 407}, 'start': {'character': 79, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 481}, 'start': {'character': 55, 'line': 481}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:31:42,497 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = pass\\n pass\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-17 23:31:42,499 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-17 23:31:43,000 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:31:43,008 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:31:43,009 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:43,009 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:43,009 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:43,009 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:43,010 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:43,010 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:43,010 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:43,010 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:43,011 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:31:43,012 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:43,012 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:31:43,012 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:31:43,012 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:43,012 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:43,013 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:31:43,013 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:31:43,013 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:31:43,013 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:31:43,129 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 255}, 'start': {'character': 79, 'line': 255}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 407}, 'start': {'character': 79, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 481}, 'start': {'character': 55, 'line': 481}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:31:43,130 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 255}, 'start': {'character': 79, 'line': 255}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 361}, 'start': {'character': 79, 'line': 361}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 407}, 'start': {'character': 79, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 481}, 'start': {'character': 55, 'line': 481}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:23,692 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = pass\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter + \'.\'\\n + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-17 23:33:24,194 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:24,198 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:33:24,198 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:24,198 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:24,198 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:24,199 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:24,199 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:24,199 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:24,199 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:24,199 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:24,199 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:24,200 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:24,266 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:24,266 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:25,739 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = pass\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":52}}}' 2018-02-17 23:33:25,740 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":52}}}' 2018-02-17 23:33:26,242 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:26,249 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:33:26,250 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:26,251 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:26,251 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:26,251 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:26,251 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:26,252 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:26,252 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:26,252 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:26,252 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:26,253 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:26,253 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:26,254 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:26,254 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:26,254 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:26,254 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:26,254 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:26,255 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:26,255 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:26,366 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 204}, 'start': {'character': 79, 'line': 204}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 256}, 'start': {'character': 79, 'line': 256}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 408}, 'start': {'character': 79, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 482}, 'start': {'character': 55, 'line': 482}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:26,367 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 204}, 'start': {'character': 79, 'line': 204}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 256}, 'start': {'character': 79, 'line': 256}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 408}, 'start': {'character': 79, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 482}, 'start': {'character': 55, 'line': 482}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:41,323 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = pass\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":53}}}' 2018-02-17 23:33:41,825 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:41,831 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:33:41,832 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:41,832 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:41,832 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:41,832 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:41,833 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:41,833 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:41,833 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:41,833 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:41,833 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:41,834 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:41,835 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:41,913 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:41,913 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:42,137 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = pass\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":54}}}' 2018-02-17 23:33:42,139 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":54}}}' 2018-02-17 23:33:42,639 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:42,643 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:33:42,644 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:42,644 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:42,644 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:42,644 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:42,644 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:42,645 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:42,645 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:42,645 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:42,645 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:42,645 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:42,646 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:42,735 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:42,735 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 47, 'line': 202}, 'start': {'character': 23, 'line': 202}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:48,300 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":55}}}' 2018-02-17 23:33:48,802 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:48,912 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:33:48,927 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:48,927 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:48,927 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:48,927 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:48,927 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:48,928 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:48,928 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:48,928 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:48,928 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:48,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:48,932 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:48,932 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:48,932 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:48,932 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:48,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:48,933 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:48,933 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:48,933 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:49,021 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 34, 'line': 203}, 'start': {'character': 11, 'line': 203}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 19, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 41, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 39, 'line': 205}, 'start': {'character': 24, 'line': 205}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:49,022 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 34, 'line': 203}, 'start': {'character': 11, 'line': 203}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 19, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 41, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 39, 'line': 205}, 'start': {'character': 24, 'line': 205}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:49,063 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID():\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":56}}}' 2018-02-17 23:33:49,065 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":56}}}' 2018-02-17 23:33:49,566 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:49,642 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:33:49,662 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:49,662 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:49,663 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:49,663 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:49,663 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:49,663 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:49,663 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:49,664 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:49,664 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:49,668 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:49,669 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:49,772 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 34, 'line': 203}, 'start': {'character': 11, 'line': 203}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 19, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 41, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 39, 'line': 205}, 'start': {'character': 24, 'line': 205}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:49,772 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 34, 'line': 203}, 'start': {'character': 11, 'line': 203}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 19, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 60, 'line': 204}, 'start': {'character': 41, 'line': 204}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 39, 'line': 205}, 'start': {'character': 24, 'line': 205}}, 'source': 'pyflakes', 'message': "undefined name 'self'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:57,677 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":57}}}' 2018-02-17 23:33:58,179 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:58,226 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:33:58,235 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:58,236 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:58,239 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:58,240 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:58,308 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:58,308 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:33:58,370 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":58}}}' 2018-02-17 23:33:58,372 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":58}}}' 2018-02-17 23:33:58,873 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:33:58,986 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:33:59,007 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:59,007 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:59,008 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:59,008 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:59,008 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:59,008 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:59,009 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:59,009 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:59,009 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:33:59,016 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:59,016 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:33:59,016 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:33:59,017 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:59,017 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:59,017 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:33:59,017 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:33:59,018 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:33:59,018 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:33:59,164 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:33:59,164 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 22, 'line': 202}, 'start': {'character': 8, 'line': 202}}, 'source': 'pyflakes', 'message': "local variable 'refKniha' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:34:08,355 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter \\\\\\n + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":59}}}' 2018-02-17 23:34:08,357 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":59}}}' 2018-02-17 23:34:08,858 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:34:08,979 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:34:08,999 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:09,000 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:34:09,000 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:34:09,000 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:09,000 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:09,001 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:09,001 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:34:09,001 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:09,001 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:34:09,009 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:09,009 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:34:09,010 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:34:09,010 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:09,010 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:09,010 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:09,011 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:34:09,011 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:09,011 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:34:09,158 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:34:09,159 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 207}, 'start': {'character': 0, 'line': 207}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 257}, 'start': {'character': 79, 'line': 257}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 363}, 'start': {'character': 79, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 377}, 'start': {'character': 79, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 409}, 'start': {'character': 79, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 483}, 'start': {'character': 55, 'line': 483}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:34:11,080 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":60}}}' 2018-02-17 23:34:11,082 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":60}}}' 2018-02-17 23:34:11,583 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:34:11,693 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 206}, 'start': {'character': 0, 'line': 206}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 232}, 'start': {'character': 0, 'line': 232}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:34:11,715 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:11,716 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:34:11,716 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:34:11,716 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:11,716 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:11,717 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:11,717 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:34:11,717 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:11,717 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:34:11,726 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:11,727 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:34:11,727 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:34:11,727 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:11,727 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:11,728 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:11,728 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:34:11,728 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:11,728 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:34:11,877 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 206}, 'start': {'character': 0, 'line': 206}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 232}, 'start': {'character': 0, 'line': 232}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 233}, 'start': {'character': 4, 'line': 233}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 256}, 'start': {'character': 79, 'line': 256}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 408}, 'start': {'character': 79, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 482}, 'start': {'character': 55, 'line': 482}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:34:11,877 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 206}, 'start': {'character': 0, 'line': 206}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 232}, 'start': {'character': 0, 'line': 232}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 233}, 'start': {'character': 4, 'line': 233}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 256}, 'start': {'character': 79, 'line': 256}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 367}, 'start': {'character': 79, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 408}, 'start': {'character': 79, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 482}, 'start': {'character': 55, 'line': 482}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:34:28,613 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":61}}}' 2018-02-17 23:34:29,115 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:34:29,118 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:34:29,119 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:29,119 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:34:29,119 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:34:29,120 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:29,120 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:29,120 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:29,120 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:34:29,120 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:29,120 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:34:29,121 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:34:29,122 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:34:29,194 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 77, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'pyflakes', 'message': 'expected an indented block'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'character': 73, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 73, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:34:29,194 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 77, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'pyflakes', 'message': 'expected an indented block'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E303', 'range': {'end': {'character': 73, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 73, 'line': 208}, 'start': {'character': 4, 'line': 208}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:35:32,289 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n pass\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":62}}}' 2018-02-17 23:35:32,293 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":62}}}' 2018-02-17 23:35:32,795 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:35:32,912 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:35:32,933 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:35:32,933 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:35:32,933 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:35:32,934 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:35:32,934 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:35:32,934 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:35:32,934 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:35:32,935 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:35:32,935 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:35:32,943 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:35:32,943 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:35:32,943 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:35:32,944 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:35:32,944 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:35:32,944 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:35:32,944 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:35:32,945 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:35:32,945 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:35:33,099 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:35:33,100 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:38:35,613 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME \\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":63}}}' 2018-02-17 23:38:36,114 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:38:36,163 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:38:36,172 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:36,172 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:38:36,172 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:38:36,172 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:36,172 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:36,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:36,173 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:38:36,173 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:36,173 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:36,177 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:38:36,244 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 32, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'W291', 'range': {'end': {'character': 32, 'line': 360}, 'start': {'character': 30, 'line': 360}}, 'source': 'pycodestyle', 'message': 'W291 trailing whitespace'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:38:36,244 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 32, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'W291', 'range': {'end': {'character': 32, 'line': 360}, 'start': {'character': 30, 'line': 360}}, 'source': 'pycodestyle', 'message': 'W291 trailing whitespace'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:38:48,863 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":64}}}' 2018-02-17 23:38:49,364 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:38:49,466 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:38:49,485 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:49,486 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:38:49,486 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:38:49,486 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:49,486 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:49,487 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:49,487 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:38:49,487 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:49,487 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:38:49,493 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:49,493 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:38:49,494 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:38:49,494 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:49,494 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:49,494 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:49,495 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:38:49,495 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:49,495 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:38:49,630 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:38:49,630 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:38:49,684 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":65}}}' 2018-02-17 23:38:49,686 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":65}}}' 2018-02-17 23:38:50,188 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:38:50,299 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:38:50,360 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:50,360 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:38:50,360 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:38:50,361 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:50,361 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:50,361 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:50,361 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:38:50,361 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:50,362 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:38:50,368 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:50,368 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:38:50,369 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:38:50,369 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:50,369 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:50,369 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:38:50,370 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:38:50,370 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:38:50,370 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:38:50,518 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:38:50,518 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 364}, 'start': {'character': 79, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 368}, 'start': {'character': 79, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 378}, 'start': {'character': 79, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 410}, 'start': {'character': 79, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 484}, 'start': {'character': 55, 'line': 484}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:39:02,390 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":66}}}' 2018-02-17 23:39:02,892 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:39:02,952 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:39:02,965 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:02,966 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:39:02,970 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:02,970 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:39:02,970 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:39:02,971 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:02,971 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:02,971 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:02,971 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:39:02,971 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:02,971 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:39:03,044 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 485}, 'start': {'character': 55, 'line': 485}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:39:03,044 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 485}, 'start': {'character': 55, 'line': 485}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:39:03,145 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":67}}}' 2018-02-17 23:39:03,146 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":67}}}' 2018-02-17 23:39:03,647 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:39:03,764 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:39:03,788 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:03,788 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:39:03,788 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:39:03,789 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:03,789 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:03,789 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:03,789 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:39:03,789 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:03,790 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:39:03,796 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:03,797 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:39:03,797 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:39:03,797 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:03,797 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:03,798 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:03,798 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:39:03,798 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:03,798 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:39:03,959 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 485}, 'start': {'character': 55, 'line': 485}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:39:03,959 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 365}, 'start': {'character': 79, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 485}, 'start': {'character': 55, 'line': 485}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:39:26,399 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event()\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":68}}}' 2018-02-17 23:39:26,900 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:39:26,985 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:39:26,996 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:26,996 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:39:26,996 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:39:26,996 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:26,996 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:26,997 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:26,997 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:39:26,997 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:26,997 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:39:27,000 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:39:27,001 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:39:27,075 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 79, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 486}, 'start': {'character': 55, 'line': 486}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:39:27,075 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 47, 'line': 360}, 'start': {'character': 12, 'line': 360}}, 'source': 'pyflakes', 'message': "local variable 'refID' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 79, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 486}, 'start': {'character': 55, 'line': 486}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:40:16,087 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, content=\'\', name=\'\', attrs=None):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":69}}}' 2018-02-17 23:40:16,589 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:40:16,594 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:40:16,595 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:16,596 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:40:16,596 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:16,597 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:40:16,666 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 177, 'line': 362}, 'start': {'character': 88, 'line': 362}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 89, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (88 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 364}, 'start': {'character': 0, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 0, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 0, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 79, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 455}, 'start': {'character': 4, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 486}, 'start': {'character': 55, 'line': 486}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:40:16,666 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 177, 'line': 362}, 'start': {'character': 88, 'line': 362}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 89, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (88 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 364}, 'start': {'character': 0, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 0, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 0, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 79, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 455}, 'start': {'character': 4, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 486}, 'start': {'character': 55, 'line': 486}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:40:36,517 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs=None):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":70}}}' 2018-02-17 23:40:37,019 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:40:37,023 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:40:37,024 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:37,024 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:37,025 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:40:37,026 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:37,026 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:40:37,026 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:40:37,026 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:37,026 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:37,027 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:37,027 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:40:37,027 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:37,027 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:40:37,096 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 161, 'line': 362}, 'start': {'character': 80, 'line': 362}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 364}, 'start': {'character': 0, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 0, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 0, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 79, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 455}, 'start': {'character': 4, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 486}, 'start': {'character': 55, 'line': 486}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:40:37,097 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 161, 'line': 362}, 'start': {'character': 80, 'line': 362}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 362}, 'start': {'character': 79, 'line': 362}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 364}, 'start': {'character': 0, 'line': 364}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 0, 'line': 365}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 79, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 366}, 'start': {'character': 0, 'line': 366}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 79, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 79, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 455}, 'start': {'character': 4, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 486}, 'start': {'character': 55, 'line': 486}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:40:46,425 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\',\\n attrs={\\n\\n }):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":71}}}' 2018-02-17 23:40:46,927 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:40:46,932 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:40:46,934 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:46,934 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:40:46,934 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:40:46,934 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:46,935 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:46,935 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:46,935 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:40:46,935 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:46,935 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:40:46,936 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:46,936 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:40:46,937 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:40:47,014 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 55, 'line': 365}, 'start': {'character': 27, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E128', 'range': {'end': {'character': 28, 'line': 363}, 'start': {'character': 20, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:40:47,014 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 55, 'line': 365}, 'start': {'character': 27, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E128', 'range': {'end': {'character': 28, 'line': 363}, 'start': {'character': 20, 'line': 363}}, 'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:41:00,222 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'\',\\n\\n }):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":72}}}' 2018-02-17 23:41:00,724 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:41:00,729 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:41:00,730 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:00,731 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:41:00,732 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:00,732 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:41:00,732 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:41:00,733 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:00,733 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:00,733 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:00,733 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:41:00,733 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:00,733 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:41:00,817 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 55, 'line': 365}, 'start': {'character': 27, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:41:00,818 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 55, 'line': 365}, 'start': {'character': 27, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:41:04,682 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'\',\\n\\n }):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":73}}}' 2018-02-17 23:41:04,683 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":73}}}' 2018-02-17 23:41:05,184 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:41:05,194 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:41:05,197 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:05,197 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:41:05,197 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:41:05,197 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:05,198 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:05,198 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:05,198 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:41:05,198 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:05,198 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:41:05,200 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:05,200 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:41:05,201 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:41:05,201 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:05,201 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:05,201 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:05,202 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:41:05,202 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:05,202 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:41:05,362 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 15, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:41:05,362 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 15, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:41:44,701 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n\\n }):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":74}}}' 2018-02-17 23:41:45,203 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:41:45,207 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:41:45,208 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:45,208 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:41:45,208 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:41:45,208 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:45,208 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:45,209 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:45,209 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:41:45,209 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:45,209 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:41:45,210 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:41:45,280 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 15, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:41:45,280 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 31, 'line': 365}, 'start': {'character': 15, 'line': 365}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 367}, 'start': {'character': 0, 'line': 367}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 79, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 458}, 'start': {'character': 4, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:42:36,968 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + attrs[\'n\']\\n\\n }):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":75}}}' 2018-02-17 23:42:37,470 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:42:37,474 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:42:37,475 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:37,475 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:42:37,475 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:42:37,476 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:37,476 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:37,476 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:37,476 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:42:37,476 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:37,476 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:42:37,477 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:37,477 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:42:37,477 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:42:37,477 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:37,477 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:37,477 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:37,478 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:42:37,478 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:37,478 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:42:37,547 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 31, 'line': 367}, 'start': {'character': 15, 'line': 367}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 79, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 79, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 457}, 'start': {'character': 0, 'line': 457}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 458}, 'start': {'character': 0, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 460}, 'start': {'character': 4, 'line': 460}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 491}, 'start': {'character': 55, 'line': 491}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:42:37,548 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 31, 'line': 367}, 'start': {'character': 15, 'line': 367}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 380}, 'start': {'character': 0, 'line': 380}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 393}, 'start': {'character': 0, 'line': 393}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 79, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 415}, 'start': {'character': 0, 'line': 415}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 79, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 421}, 'start': {'character': 0, 'line': 421}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 425}, 'start': {'character': 0, 'line': 425}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 457}, 'start': {'character': 0, 'line': 457}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 458}, 'start': {'character': 0, 'line': 458}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 460}, 'start': {'character': 4, 'line': 460}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 491}, 'start': {'character': 55, 'line': 491}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:42:41,596 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + attrs[\'n\']\\n }):\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":76}}}' 2018-02-17 23:42:41,599 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":76}}}' 2018-02-17 23:42:42,101 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:42:42,105 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:42:42,106 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:42,107 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:42:42,108 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:42,108 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:42,109 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:42:42,186 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 31, 'line': 366}, 'start': {'character': 15, 'line': 366}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 457}, 'start': {'character': 0, 'line': 457}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 459}, 'start': {'character': 4, 'line': 459}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 490}, 'start': {'character': 55, 'line': 490}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:42:42,186 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 31, 'line': 366}, 'start': {'character': 15, 'line': 366}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 368}, 'start': {'character': 0, 'line': 368}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 369}, 'start': {'character': 0, 'line': 369}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 0, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 371}, 'start': {'character': 0, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 372}, 'start': {'character': 0, 'line': 372}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 55, 'line': 373}, 'start': {'character': 0, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 0, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 375}, 'start': {'character': 0, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 376}, 'start': {'character': 0, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 80, 'line': 377}, 'start': {'character': 0, 'line': 377}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 378}, 'start': {'character': 0, 'line': 378}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 379}, 'start': {'character': 0, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 42, 'line': 381}, 'start': {'character': 0, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 382}, 'start': {'character': 0, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 383}, 'start': {'character': 0, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 0, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 30, 'line': 385}, 'start': {'character': 0, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 64, 'line': 386}, 'start': {'character': 0, 'line': 386}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 0, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 0, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 77, 'line': 389}, 'start': {'character': 0, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 0, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 19, 'line': 391}, 'start': {'character': 0, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 392}, 'start': {'character': 0, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 36, 'line': 394}, 'start': {'character': 0, 'line': 394}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 0, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 396}, 'start': {'character': 0, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 397}, 'start': {'character': 0, 'line': 397}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 398}, 'start': {'character': 0, 'line': 398}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 60, 'line': 399}, 'start': {'character': 0, 'line': 399}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 400}, 'start': {'character': 0, 'line': 400}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 401}, 'start': {'character': 0, 'line': 401}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 402}, 'start': {'character': 0, 'line': 402}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 41, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 59, 'line': 405}, 'start': {'character': 0, 'line': 405}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 407}, 'start': {'character': 0, 'line': 407}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 408}, 'start': {'character': 0, 'line': 408}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 409}, 'start': {'character': 0, 'line': 409}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 410}, 'start': {'character': 0, 'line': 410}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 2, 'line': 411}, 'start': {'character': 0, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 412}, 'start': {'character': 0, 'line': 412}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 413}, 'start': {'character': 0, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 414}, 'start': {'character': 0, 'line': 414}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 0, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 417}, 'start': {'character': 0, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 33, 'line': 418}, 'start': {'character': 0, 'line': 418}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 419}, 'start': {'character': 0, 'line': 419}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 420}, 'start': {'character': 0, 'line': 420}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 422}, 'start': {'character': 0, 'line': 422}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 28, 'line': 423}, 'start': {'character': 0, 'line': 423}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 424}, 'start': {'character': 0, 'line': 424}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 78, 'line': 426}, 'start': {'character': 0, 'line': 426}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 427}, 'start': {'character': 0, 'line': 427}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 428}, 'start': {'character': 0, 'line': 428}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 32, 'line': 429}, 'start': {'character': 0, 'line': 429}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 430}, 'start': {'character': 0, 'line': 430}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 20, 'line': 431}, 'start': {'character': 0, 'line': 431}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 44, 'line': 432}, 'start': {'character': 0, 'line': 432}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 17, 'line': 433}, 'start': {'character': 0, 'line': 433}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 434}, 'start': {'character': 0, 'line': 434}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 435}, 'start': {'character': 0, 'line': 435}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 43, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 51, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 29, 'line': 438}, 'start': {'character': 0, 'line': 438}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 440}, 'start': {'character': 0, 'line': 440}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 22, 'line': 441}, 'start': {'character': 0, 'line': 441}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 34, 'line': 442}, 'start': {'character': 0, 'line': 442}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 61, 'line': 443}, 'start': {'character': 0, 'line': 443}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 65, 'line': 444}, 'start': {'character': 0, 'line': 444}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 54, 'line': 445}, 'start': {'character': 0, 'line': 445}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 47, 'line': 446}, 'start': {'character': 0, 'line': 446}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 447}, 'start': {'character': 0, 'line': 447}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 63, 'line': 448}, 'start': {'character': 0, 'line': 448}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 48, 'line': 449}, 'start': {'character': 0, 'line': 449}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 450}, 'start': {'character': 0, 'line': 450}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 45, 'line': 451}, 'start': {'character': 0, 'line': 451}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 53, 'line': 452}, 'start': {'character': 0, 'line': 452}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 31, 'line': 453}, 'start': {'character': 0, 'line': 453}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 23, 'line': 455}, 'start': {'character': 0, 'line': 455}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E115', 'range': {'end': {'character': 18, 'line': 457}, 'start': {'character': 0, 'line': 457}}, 'source': 'pycodestyle', 'message': 'E115 expected an indented block (comment)'}, {'severity': 2, 'code': 'E112', 'range': {'end': {'character': 32, 'line': 459}, 'start': {'character': 4, 'line': 459}}, 'source': 'pycodestyle', 'message': 'E112 expected an indented block'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 490}, 'start': {'character': 55, 'line': 490}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:42:49,467 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + attrs[\'n\']\\n })\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":77}}}' 2018-02-17 23:42:49,469 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":77}}}' 2018-02-17 23:42:49,970 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:42:50,082 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:42:50,103 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:50,103 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:42:50,103 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:42:50,103 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:50,103 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:50,104 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:50,104 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:42:50,104 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:50,104 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:42:50,111 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:50,111 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:42:50,111 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:42:50,112 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:50,112 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:50,112 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:42:50,112 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:42:50,113 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:42:50,113 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:42:50,266 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 490}, 'start': {'character': 55, 'line': 490}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:42:50,266 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 27, 'line': 361}, 'start': {'character': 12, 'line': 361}}, 'source': 'pyflakes', 'message': "local variable 'N' is assigned to but never used"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 370}, 'start': {'character': 79, 'line': 370}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 374}, 'start': {'character': 79, 'line': 374}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 490}, 'start': {'character': 55, 'line': 490}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:43:23,190 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":78}}}' 2018-02-17 23:43:23,691 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:43:23,746 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:43:23,757 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:23,758 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:23,763 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:43:23,764 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:23,764 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:43:23,842 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:43:23,843 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:43:50,637 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":79}}}' 2018-02-17 23:43:51,139 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:43:51,186 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 460}, 'start': {'character': 0, 'line': 460}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:43:51,195 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:51,195 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:43:51,195 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:43:51,195 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:51,195 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:51,195 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:51,196 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:43:51,196 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:51,196 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:43:51,199 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:51,200 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:43:51,267 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 460}, 'start': {'character': 0, 'line': 460}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 79, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 79, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 491}, 'start': {'character': 55, 'line': 491}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:43:51,267 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 460}, 'start': {'character': 0, 'line': 460}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 79, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 79, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 491}, 'start': {'character': 55, 'line': 491}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:43:51,469 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n\\n# \\n# \\n# \\n# \\n# \\n# study\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":80}}}' 2018-02-17 23:43:51,471 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":80}}}' 2018-02-17 23:43:51,974 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:43:52,089 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 460}, 'start': {'character': 0, 'line': 460}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:43:52,110 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:52,110 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:43:52,110 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:43:52,110 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:52,111 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:52,111 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:52,111 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:43:52,111 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:52,111 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:43:52,119 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:52,119 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:43:52,119 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:43:52,120 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:52,120 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:52,120 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:43:52,120 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:43:52,120 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:43:52,121 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:43:52,274 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 460}, 'start': {'character': 0, 'line': 460}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 79, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 79, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 491}, 'start': {'character': 55, 'line': 491}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:43:52,274 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 460}, 'start': {'character': 0, 'line': 460}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 391}, 'start': {'character': 79, 'line': 391}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 396}, 'start': {'character': 79, 'line': 396}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 417}, 'start': {'character': 79, 'line': 417}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 491}, 'start': {'character': 55, 'line': 491}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:44:30,788 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n elif name == \'odkaz\':\\n self.create_event(Event_type.endElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":81}}}' 2018-02-17 23:44:31,290 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:44:31,338 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:31,348 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:44:31,349 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:31,349 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:44:31,352 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:31,353 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:44:31,422 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 34, 'line': 483}, 'start': {'character': 27, 'line': 483}}, 'source': 'pyflakes', 'message': "undefined name 'refID'"}, {'severity': 2, 'range': {'end': {'character': 43, 'line': 484}, 'start': {'character': 26, 'line': 484}}, 'source': 'pyflakes', 'message': "undefined name 'refID'"}, {'severity': 2, 'range': {'end': {'character': 43, 'line': 484}, 'start': {'character': 40, 'line': 484}}, 'source': 'pyflakes', 'message': "undefined name 'N'"}, {'severity': 2, 'range': {'end': {'character': 23, 'line': 485}, 'start': {'character': 21, 'line': 485}}, 'source': 'pyflakes', 'message': "undefined name 'N'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 488}, 'start': {'character': 0, 'line': 488}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 492}, 'start': {'character': 55, 'line': 492}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:44:31,422 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 34, 'line': 483}, 'start': {'character': 27, 'line': 483}}, 'source': 'pyflakes', 'message': "undefined name 'refID'"}, {'severity': 2, 'range': {'end': {'character': 43, 'line': 484}, 'start': {'character': 26, 'line': 484}}, 'source': 'pyflakes', 'message': "undefined name 'refID'"}, {'severity': 2, 'range': {'end': {'character': 43, 'line': 484}, 'start': {'character': 40, 'line': 484}}, 'source': 'pyflakes', 'message': "undefined name 'N'"}, {'severity': 2, 'range': {'end': {'character': 23, 'line': 485}, 'start': {'character': 21, 'line': 485}}, 'source': 'pyflakes', 'message': "undefined name 'N'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 488}, 'start': {'character': 0, 'line': 488}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 492}, 'start': {'character': 55, 'line': 492}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:44:46,909 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n elif name == \'odkaz\':\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":82}}}' 2018-02-17 23:44:46,915 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":82}}}' 2018-02-17 23:44:47,423 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:44:47,532 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:44:47,552 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:47,552 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:44:47,552 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:44:47,552 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:47,553 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:47,553 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:47,553 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:44:47,553 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:47,553 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:44:47,561 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:47,562 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:44:47,562 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:44:47,562 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:47,562 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:47,563 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:44:47,563 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:44:47,563 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:44:47,563 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:44:47,710 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 483}, 'start': {'character': 0, 'line': 483}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:44:47,711 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 454}, 'start': {'character': 0, 'line': 454}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 21 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 371}, 'start': {'character': 79, 'line': 371}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 379}, 'start': {'character': 79, 'line': 379}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 382}, 'start': {'character': 79, 'line': 382}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 411}, 'start': {'character': 79, 'line': 411}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 483}, 'start': {'character': 0, 'line': 483}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:46:28,991 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n elif name == \'odkaz\':\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":83}}}' 2018-02-17 23:46:29,492 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:46:29,497 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:29,498 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:46:29,499 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:29,499 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:29,500 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:46:29,567 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 77, 'line': 369}, 'start': {'character': 38, 'line': 369}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:46:29,567 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 77, 'line': 369}, 'start': {'character': 38, 'line': 369}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:46:30,247 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n elif name == \'odkaz\':\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":84}}}' 2018-02-17 23:46:30,249 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":84}}}' 2018-02-17 23:46:30,749 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:46:30,758 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:46:30,761 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:30,761 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:46:30,761 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:46:30,761 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:30,762 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:30,762 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:30,762 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:46:30,762 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:30,763 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:46:30,764 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:30,765 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:46:30,765 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:46:30,765 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:30,765 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:30,766 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:46:30,766 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:46:30,766 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:46:30,766 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:46:30,941 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'severity': 1, 'range': {'end': {'character': 77, 'line': 369}, 'start': {'character': 38, 'line': 369}}, 'source': 'pyflakes', 'message': 'invalid syntax'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:46:30,941 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 1, 'range': {'end': {'character': 77, 'line': 369}, 'start': {'character': 38, 'line': 369}}, 'source': 'pyflakes', 'message': 'invalid syntax'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:47:10,783 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n elif name == \'odkaz\':\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":85}}}' 2018-02-17 23:47:11,284 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:47:11,333 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:47:11,343 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:11,344 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:11,374 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:47:11,443 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:47:11,443 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:47:11,550 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n elif name == \'odkaz\':\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":86}}}' 2018-02-17 23:47:11,553 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":86}}}' 2018-02-17 23:47:12,054 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:47:12,169 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:47:12,191 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:12,192 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:47:12,192 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:47:12,192 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:12,192 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:12,193 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:12,193 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:47:12,193 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:12,193 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:47:12,202 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:12,202 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:47:12,202 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:47:12,202 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:12,203 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:12,203 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:12,203 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:47:12,203 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:12,204 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:47:12,356 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:47:12,357 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 27, 'line': 485}, 'start': {'character': 0, 'line': 485}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 489}, 'start': {'character': 55, 'line': 489}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:47:53,845 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collecting_pozn:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":87}}}' 2018-02-17 23:47:54,347 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:47:54,393 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:47:54,402 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:54,402 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:47:54,402 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:47:54,402 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:54,402 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:54,403 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:54,403 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:47:54,403 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:54,403 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:47:54,407 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:47:54,473 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}], [{'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]] [hook] 2018-02-17 23:47:54,474 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 81}, 'start': {'character': 0, 'line': 81}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 89}, 'start': {'character': 0, 'line': 89}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 93}, 'start': {'character': 0, 'line': 93}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 99}, 'start': {'character': 0, 'line': 99}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 142}, 'start': {'character': 0, 'line': 142}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 146}, 'start': {'character': 0, 'line': 146}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 155}, 'start': {'character': 0, 'line': 155}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 163}, 'start': {'character': 0, 'line': 163}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D101', 'range': {'end': {'character': 19, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'code': 'D107', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 201}, 'start': {'character': 0, 'line': 201}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 208}, 'start': {'character': 0, 'line': 208}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 234}, 'start': {'character': 0, 'line': 234}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'code': 'D102', 'range': {'end': {'character': 19, 'line': 456}, 'start': {'character': 0, 'line': 456}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'end': {'character': 70, 'line': 168}, 'start': {'character': 13, 'line': 168}}, 'source': 'pyflakes', 'message': "undefined name 'Enum'"}, {'severity': 2, 'range': {'end': {'character': 28, 'line': 235}, 'start': {'character': 4, 'line': 235}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E305', 'range': {'end': {'character': 67, 'line': 167}, 'start': {'character': 0, 'line': 167}}, 'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'severity': 2, 'code': 'E302', 'range': {'end': {'character': 36, 'line': 170}, 'start': {'character': 0, 'line': 170}}, 'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 188}, 'start': {'character': 79, 'line': 188}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 88, 'line': 193}, 'start': {'character': 79, 'line': 193}}, 'source': 'pycodestyle', 'message': 'E501 line too long (87 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 196}, 'start': {'character': 79, 'line': 196}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 82, 'line': 258}, 'start': {'character': 79, 'line': 258}}, 'source': 'pycodestyle', 'message': 'E501 line too long (81 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 373}, 'start': {'character': 79, 'line': 373}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 381}, 'start': {'character': 79, 'line': 381}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 99, 'line': 385}, 'start': {'character': 79, 'line': 385}}, 'source': 'pycodestyle', 'message': 'E501 line too long (98 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 81, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'message': 'E501 line too long (80 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 90, 'line': 392}, 'start': {'character': 79, 'line': 392}}, 'source': 'pycodestyle', 'message': 'E501 line too long (89 > 79 characters)'}, {'severity': 2, 'code': 'E501', 'range': {'end': {'character': 85, 'line': 413}, 'start': {'character': 79, 'line': 413}}, 'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)'}, {'severity': 2, 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'message': 'W292 no newline at end of file'}]} 2018-02-17 23:49:06,703 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collected_note:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":88}}}\x90ooooooo\x91\t' 2018-02-17 23:49:06,704 UTC - ERROR - pyls.server - Language server exiting due to uncaught exception Traceback (most recent call last): File "/home/matej/.local/lib/python3.4/site-packages/pyls/server.py", line 43, in handle data = data.decode("utf-8") UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 20000: invalid start byte 2018-02-17 23:49:08,070 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 23:49:08,071 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-17 23:49:08,072 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off', 'capabilities': {}, 'initializationOptions': {}, 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-17 23:49:08,350 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 23:49:08,350 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 23:49:08,350 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 23:49:08,351 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 23:49:08,351 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 23:49:08,351 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 23:49:08,351 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 23:49:08,351 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 23:49:08,351 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 23:49:08,352 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 23:49:08,352 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 23:49:08,352 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 23:49:08,352 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 23:49:08,352 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 23:49:08,353 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-17 23:49:08,353 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None config: workspace: 2018-02-17 23:49:08,353 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 23:49:08,353 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None config: workspace: 2018-02-17 23:49:08,353 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 23:49:08,354 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None config: workspace: 2018-02-17 23:49:08,354 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 23:49:08,354 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None config: workspace: 2018-02-17 23:49:08,354 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 23:49:08,354 UTC - INFO - pyls.python_ls - Server capabilities: {'definitionProvider': True, 'documentSymbolProvider': True, 'documentFormattingProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'hoverProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'textDocumentSync': 2, 'documentRangeFormattingProvider': True, 'codeActionProvider': True, 'referencesProvider': True, 'experimental': {}, 'renameProvider': True, 'executeCommandProvider': {'commands': []}, 'codeLensProvider': {'resolveProvider': False}} 2018-02-17 23:49:08,370 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n for event in self.collected_note:\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-17 23:49:08,372 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:49:08,372 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 23:49:08,373 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1}}}' 2018-02-17 23:49:08,874 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:49:08,874 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:49:08,875 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:49:08,875 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:08,875 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:08,875 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:08,876 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:49:08,876 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:08,876 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:49:08,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:08,994 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:49:08,994 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:49:08,994 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:08,994 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:08,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:08,995 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:49:08,995 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:08,995 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:49:09,048 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:49:09,059 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 489, 'character': 55}, 'end': {'line': 489, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:49:09,059 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 489, 'character': 55}, 'end': {'line': 489, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:49:46,539 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 23:49:46,545 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 23:49:47,046 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:49:47,046 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:47,046 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:47,047 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:49:47,121 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:49:47,122 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:49:47,194 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:49:47,204 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 488, 'character': 55}, 'end': {'line': 488, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:49:47,204 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 488, 'character': 55}, 'end': {'line': 488, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:50:00,785 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 23:50:01,287 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:50:01,287 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:01,288 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:50:01,288 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:50:01,288 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:01,288 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:01,289 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:01,289 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:50:01,289 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:01,289 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:50:01,433 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:01,433 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:50:01,434 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:50:01,434 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:01,434 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:01,434 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:01,434 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:50:01,435 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:01,435 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:50:01,520 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-17 23:50:01,526 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:50:01,548 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-17 23:50:01,549 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 489, 'character': 55}, 'end': {'line': 489, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:50:01,549 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 489, 'character': 55}, 'end': {'line': 489, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:50:02,057 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:50:02,058 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:02,058 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:50:02,058 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:50:02,058 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:02,059 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:02,059 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:02,059 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:50:02,059 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:02,060 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:50:02,220 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:02,220 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:50:02,220 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:50:02,221 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:02,221 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:02,221 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:02,221 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:50:02,222 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:02,222 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:50:02,343 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:50:02,365 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 489, 'character': 55}, 'end': {'line': 489, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:50:02,365 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 188, 'character': 79}, 'end': {'line': 188, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 193, 'character': 79}, 'end': {'line': 193, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 489, 'character': 55}, 'end': {'line': 489, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 0}, 'end': {'line': 201, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:50:35,444 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.collecting_pozn:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.collecting_pozn = True\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n # FIXME dispose collected notes to some dict\\n self.collecting_pozn = False\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 23:50:35,449 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-17 23:50:35,950 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:50:35,951 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:35,951 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:50:35,951 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:50:35,951 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:35,952 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:35,952 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:35,952 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:50:35,952 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:35,953 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:50:36,112 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:36,112 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:50:36,113 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:50:36,113 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:36,113 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:36,114 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:50:36,114 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:50:36,114 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:50:36,114 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:50:36,227 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 459, 'character': 0}, 'end': {'line': 459, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:50:36,249 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 79}, 'end': {'line': 189, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 194, 'character': 79}, 'end': {'line': 194, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 197, 'character': 79}, 'end': {'line': 197, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 395, 'character': 79}, 'end': {'line': 395, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 416, 'character': 79}, 'end': {'line': 416, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 490, 'character': 55}, 'end': {'line': 490, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 459, 'character': 0}, 'end': {'line': 459, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:50:36,249 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 79}, 'end': {'line': 189, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 194, 'character': 79}, 'end': {'line': 194, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 197, 'character': 79}, 'end': {'line': 197, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 395, 'character': 79}, 'end': {'line': 395, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 416, 'character': 79}, 'end': {'line': 416, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 490, 'character': 55}, 'end': {'line': 490, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 459, 'character': 0}, 'end': {'line': 459, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:51:56,271 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-17 23:51:56,772 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:51:56,773 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:56,773 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:51:56,773 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:51:56,773 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:56,773 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:56,774 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:56,774 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:51:56,774 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:56,774 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:51:56,857 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:56,857 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:51:56,857 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:51:56,857 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:56,857 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:56,858 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:56,858 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:51:56,858 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:56,858 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:51:56,915 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:51:56,926 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 79}, 'end': {'line': 189, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 194, 'character': 79}, 'end': {'line': 194, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 197, 'character': 79}, 'end': {'line': 197, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 487, 'character': 55}, 'end': {'line': 487, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:51:56,927 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 79}, 'end': {'line': 189, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 194, 'character': 79}, 'end': {'line': 194, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 197, 'character': 79}, 'end': {'line': 197, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 487, 'character': 55}, 'end': {'line': 487, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:51:57,076 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collecting_pozn = False\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n # *****************************************************************\\n # FIXME we need to replace all direct calls to children of self.ds\\n # with calling a special function which will depending on the value\\n # of self.collecting_pozn either collect all events (or some data\\n # structures simulating events) or sending them directly.\\n #\\n # Then when reading through defpozn and defpozno elements we need to\\n # be collecting instead of firing these events and send them down\\n # the pipe, only when the reference point of the note happens.\\n # *****************************************************************\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 23:51:57,078 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-17 23:51:57,580 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:51:57,580 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:57,581 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:51:57,581 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:51:57,581 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:57,581 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:57,582 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:57,582 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:51:57,582 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:57,582 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:51:57,717 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:57,717 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:51:57,717 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:51:57,718 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:57,718 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:57,718 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:51:57,718 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:51:57,719 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:51:57,719 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:51:57,825 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:51:57,845 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 79}, 'end': {'line': 189, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 194, 'character': 79}, 'end': {'line': 194, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 197, 'character': 79}, 'end': {'line': 197, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 487, 'character': 55}, 'end': {'line': 487, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:51:57,845 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 79}, 'end': {'line': 189, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 194, 'character': 79}, 'end': {'line': 194, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 197, 'character': 79}, 'end': {'line': 197, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 487, 'character': 55}, 'end': {'line': 487, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 202, 'character': 0}, 'end': {'line': 202, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:53:50,742 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-17 23:53:51,243 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:53:51,244 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:51,244 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:53:51,244 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:53:51,244 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:51,244 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:51,244 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:51,245 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:53:51,245 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:51,245 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:53:51,318 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:51,318 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:53:51,318 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:53:51,318 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:51,318 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:51,319 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:51,319 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:53:51,319 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:51,319 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:53:51,323 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-17 23:53:51,324 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 66}}, 'code': 'E113', 'message': 'E113 unexpected indentation'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 365, 'character': 79}, 'end': {'line': 365, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 377, 'character': 79}, 'end': {'line': 377, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 405, 'character': 79}, 'end': {'line': 405, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 477, 'character': 55}, 'end': {'line': 477, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [], [{'source': 'pyflakes', 'severity': 1, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 78}}, 'message': 'unexpected indent'}]] [hook] 2018-02-17 23:53:51,324 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 66}}, 'code': 'E113', 'message': 'E113 unexpected indentation'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 365, 'character': 79}, 'end': {'line': 365, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 377, 'character': 79}, 'end': {'line': 377, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 405, 'character': 79}, 'end': {'line': 405, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 477, 'character': 55}, 'end': {'line': 477, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'pyflakes', 'severity': 1, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 78}}, 'message': 'unexpected indent'}]} 2018-02-17 23:53:52,766 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-17 23:53:53,268 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:53:53,268 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:53,268 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:53:53,268 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:53:53,268 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:53,269 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:53,269 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:53,269 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:53:53,269 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:53,269 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:53:53,336 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:53,337 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:53:53,388 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:53:53,397 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 365, 'character': 79}, 'end': {'line': 365, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 377, 'character': 79}, 'end': {'line': 377, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 405, 'character': 79}, 'end': {'line': 405, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 477, 'character': 55}, 'end': {'line': 477, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 226, 'character': 4}, 'end': {'line': 226, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:53:53,398 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 365, 'character': 79}, 'end': {'line': 365, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 377, 'character': 79}, 'end': {'line': 377, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 405, 'character': 79}, 'end': {'line': 405, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 477, 'character': 55}, 'end': {'line': 477, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 226, 'character': 4}, 'end': {'line': 226, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:53:54,389 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-17 23:53:54,391 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-17 23:53:54,892 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:53:54,892 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:54,893 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:53:54,893 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:53:54,893 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:54,893 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:54,894 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:54,894 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:53:54,894 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:54,894 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:53:55,049 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:55,049 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:53:55,049 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:53:55,050 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:55,050 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:55,050 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:53:55,050 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:53:55,050 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:53:55,051 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:53:55,165 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:53:55,187 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 365, 'character': 79}, 'end': {'line': 365, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 377, 'character': 79}, 'end': {'line': 377, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 405, 'character': 79}, 'end': {'line': 405, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 477, 'character': 55}, 'end': {'line': 477, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 226, 'character': 4}, 'end': {'line': 226, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:53:55,187 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 365, 'character': 79}, 'end': {'line': 365, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 377, 'character': 79}, 'end': {'line': 377, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 405, 'character': 79}, 'end': {'line': 405, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 477, 'character': 55}, 'end': {'line': 477, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 226, 'character': 4}, 'end': {'line': 226, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:54:51,201 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n self.create_event(Event_type.startElement, name=name,\\n attrs=attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-17 23:54:51,703 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:54:51,703 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:54:51,703 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:54:51,703 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:54:51,704 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:54:51,704 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:54:51,704 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:54:51,704 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:54:51,704 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:54:51,704 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:54:51,795 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:54:51,796 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:54:51,890 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:54:51,904 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 16}, 'end': {'line': 189, 'character': 29}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 200, 'character': 79}, 'end': {'line': 200, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 487, 'character': 55}, 'end': {'line': 487, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:54:51,904 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 189, 'character': 16}, 'end': {'line': 189, 'character': 29}}, 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 200, 'character': 79}, 'end': {'line': 200, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 375, 'character': 79}, 'end': {'line': 375, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 389, 'character': 79}, 'end': {'line': 389, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 394, 'character': 79}, 'end': {'line': 394, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 415, 'character': 79}, 'end': {'line': 415, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 487, 'character': 55}, 'end': {'line': 487, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 236, 'character': 4}, 'end': {'line': 236, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 458, 'character': 0}, 'end': {'line': 458, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:55:08,279 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(Event_type.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.create_event(Event_type.characters, name=name, attrs=attrs)\\n self.ds.endElement(name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-17 23:55:08,780 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:08,781 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:08,782 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:08,782 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:08,859 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:08,860 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:08,860 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:55:08,916 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:55:08,928 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:55:08,928 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:55:12,047 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(Event_type.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.create_event(Event_type.characters, content=name, attrs=attrs)\\n self.ds.endElement(name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-17 23:55:12,549 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:55:12,549 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:12,549 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:12,549 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:12,549 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:12,550 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:12,550 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:12,550 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:12,550 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:12,550 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:55:12,618 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:12,618 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:12,618 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:12,618 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:12,618 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:12,618 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:12,619 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:12,619 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:12,619 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:55:12,668 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:55:12,678 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:55:12,679 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:55:16,633 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(Event_type.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.create_event(Event_type.characters, content=content)\\n self.ds.endElement(name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-17 23:55:17,135 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:55:17,135 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:17,135 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:17,135 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:17,136 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:17,136 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:17,136 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:17,136 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:17,136 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:17,136 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:55:17,204 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:17,204 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:17,204 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:17,204 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:17,204 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:17,205 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:17,205 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:17,205 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:17,205 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:55:17,258 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:55:17,295 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:55:17,295 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:55:36,147 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(Event_type.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(Event_type.characters, content=content)\\n self.ds.endElement(name)\\n self.create_event(Event_type.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-17 23:55:36,648 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:55:36,649 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:36,649 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:36,649 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:36,649 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:36,649 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:36,650 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:36,650 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:36,650 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:36,650 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:55:36,722 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:36,722 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:36,722 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:36,722 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:36,723 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:36,723 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:36,723 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:36,723 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:36,723 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:55:36,779 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:55:36,791 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:55:36,791 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 199, 'character': 79}, 'end': {'line': 199, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 258, 'character': 79}, 'end': {'line': 258, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 374, 'character': 79}, 'end': {'line': 374, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 386, 'character': 79}, 'end': {'line': 386, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 393, 'character': 79}, 'end': {'line': 393, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 414, 'character': 79}, 'end': {'line': 414, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 486, 'character': 55}, 'end': {'line': 486, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 235, 'character': 4}, 'end': {'line': 235, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 457, 'character': 0}, 'end': {'line': 457, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:55:38,503 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n # self.create_event(Event_type.endElement, name=\'note\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(Event_type.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(Event_type.characters, content=content)\\n self.create_event(Event_type.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-17 23:55:38,505 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-17 23:55:39,005 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:55:39,006 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:39,006 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:39,006 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:39,006 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:39,006 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:39,007 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:39,007 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:39,007 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:39,007 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:55:39,131 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:39,132 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:55:39,188 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 211, 'character': 0}, 'end': {'line': 211, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 456, 'character': 0}, 'end': {'line': 456, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:55:39,199 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 79}, 'end': {'line': 203, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 257, 'character': 79}, 'end': {'line': 257, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 381, 'character': 79}, 'end': {'line': 381, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 392, 'character': 79}, 'end': {'line': 392, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 413, 'character': 79}, 'end': {'line': 413, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 485, 'character': 55}, 'end': {'line': 485, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 234, 'character': 4}, 'end': {'line': 234, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 211, 'character': 0}, 'end': {'line': 211, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 456, 'character': 0}, 'end': {'line': 456, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:55:39,199 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 12}, 'end': {'line': 182, 'character': 68}}, 'code': 'E116', 'message': 'E116 unexpected indentation (comment)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 203, 'character': 79}, 'end': {'line': 203, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 257, 'character': 79}, 'end': {'line': 257, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 373, 'character': 79}, 'end': {'line': 373, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 381, 'character': 79}, 'end': {'line': 381, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 392, 'character': 79}, 'end': {'line': 392, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 413, 'character': 79}, 'end': {'line': 413, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 485, 'character': 55}, 'end': {'line': 485, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 234, 'character': 4}, 'end': {'line': 234, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 211, 'character': 0}, 'end': {'line': 211, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 456, 'character': 0}, 'end': {'line': 456, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:55:42,993 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEvent_type = Enum(\'Event_type\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(Event_type.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(Event_type.characters, content=content)\\n self.create_event(Event_type.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == Event_type.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == Event_type.endElement:\\n self.ds.endElement(name)\\n elif event_type == Event_type.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(Event_type.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(Event_type.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-17 23:55:42,998 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-17 23:55:43,499 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:55:43,499 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:43,499 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:43,500 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:55:43,575 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:55:43,576 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:55:43,577 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:55:43,635 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 0}, 'end': {'line': 182, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 454, 'character': 0}, 'end': {'line': 454, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:55:43,646 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 79}, 'end': {'line': 201, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 255, 'character': 79}, 'end': {'line': 255, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 371, 'character': 79}, 'end': {'line': 371, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 411, 'character': 79}, 'end': {'line': 411, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 483, 'character': 55}, 'end': {'line': 483, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 232, 'character': 4}, 'end': {'line': 232, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 0}, 'end': {'line': 182, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 454, 'character': 0}, 'end': {'line': 454, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:55:43,646 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 79}, 'end': {'line': 201, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 255, 'character': 79}, 'end': {'line': 255, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 371, 'character': 79}, 'end': {'line': 371, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 411, 'character': 79}, 'end': {'line': 411, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 483, 'character': 55}, 'end': {'line': 483, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 232, 'character': 4}, 'end': {'line': 232, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 0}, 'end': {'line': 182, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 454, 'character': 0}, 'end': {'line': 454, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 13}, 'end': {'line': 168, 'character': 70}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:56:06,124 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-17 23:56:06,126 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-17 23:56:06,627 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-17 23:56:06,627 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:56:06,627 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:56:06,627 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:56:06,628 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:56:06,628 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:56:06,628 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:56:06,628 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:56:06,629 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:56:06,629 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:56:06,788 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:56:06,788 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:56:06,789 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:56:06,789 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:56:06,789 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:56:06,790 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:56:06,790 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:56:06,790 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-17 23:56:06,790 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:56:06,910 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 0}, 'end': {'line': 182, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 454, 'character': 0}, 'end': {'line': 454, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-17 23:56:06,930 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 79}, 'end': {'line': 201, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 255, 'character': 79}, 'end': {'line': 255, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 371, 'character': 79}, 'end': {'line': 371, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 411, 'character': 79}, 'end': {'line': 411, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 483, 'character': 55}, 'end': {'line': 483, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 232, 'character': 4}, 'end': {'line': 232, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 0}, 'end': {'line': 182, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 454, 'character': 0}, 'end': {'line': 454, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], [{'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 8}, 'end': {'line': 168, 'character': 60}}, 'message': "undefined name 'Enum'"}]] [hook] 2018-02-17 23:56:06,931 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 67}}, 'code': 'E305', 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 196, 'character': 79}, 'end': {'line': 196, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 201, 'character': 79}, 'end': {'line': 201, 'character': 88}}, 'code': 'E501', 'message': 'E501 line too long (87 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 204, 'character': 79}, 'end': {'line': 204, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 255, 'character': 79}, 'end': {'line': 255, 'character': 82}}, 'code': 'E501', 'message': 'E501 line too long (81 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 371, 'character': 79}, 'end': {'line': 371, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 379, 'character': 79}, 'end': {'line': 379, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 382, 'character': 79}, 'end': {'line': 382, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 383, 'character': 79}, 'end': {'line': 383, 'character': 99}}, 'code': 'E501', 'message': 'E501 line too long (98 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 385, 'character': 79}, 'end': {'line': 385, 'character': 81}}, 'code': 'E501', 'message': 'E501 line too long (80 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 90}}, 'code': 'E501', 'message': 'E501 line too long (89 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 411, 'character': 79}, 'end': {'line': 411, 'character': 85}}, 'code': 'E501', 'message': 'E501 line too long (84 > 79 characters)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'start': {'line': 483, 'character': 55}, 'end': {'line': 483, 'character': 55}}, 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'source': 'mccabe', 'severity': 2, 'range': {'start': {'line': 232, 'character': 4}, 'end': {'line': 232, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 76, 'character': 0}, 'end': {'line': 76, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 81, 'character': 0}, 'end': {'line': 81, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 89, 'character': 0}, 'end': {'line': 89, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 94, 'character': 0}, 'end': {'line': 94, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 99, 'character': 0}, 'end': {'line': 99, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 142, 'character': 0}, 'end': {'line': 142, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 146, 'character': 0}, 'end': {'line': 146, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 155, 'character': 0}, 'end': {'line': 155, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 163, 'character': 0}, 'end': {'line': 163, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 182, 'character': 0}, 'end': {'line': 182, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'start': {'line': 454, 'character': 0}, 'end': {'line': 454, 'character': 19}}, 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'source': 'pyflakes', 'severity': 2, 'range': {'start': {'line': 168, 'character': 8}, 'end': {'line': 168, 'character': 60}}, 'message': "undefined name 'Enum'"}]} 2018-02-17 23:57:41,544 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-17 23:57:41,545 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-17 23:57:41,545 UTC - DEBUG - pyls.language_server - Language server initialized with {'capabilities': {}, 'initializationOptions': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off'} 2018-02-17 23:57:41,845 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-17 23:57:41,845 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-17 23:57:41,845 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-17 23:57:41,846 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-17 23:57:41,846 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-17 23:57:41,846 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-17 23:57:41,846 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-17 23:57:41,846 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-17 23:57:41,846 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-17 23:57:41,847 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-17 23:57:41,847 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-17 23:57:41,847 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-17 23:57:41,847 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-17 23:57:41,847 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-17 23:57:41,848 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-17 23:57:41,848 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-17 23:57:41,848 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-17 23:57:41,848 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-17 23:57:41,848 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-17 23:57:41,849 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-17 23:57:41,849 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-17 23:57:41,849 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-17 23:57:41,849 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-17 23:57:41,849 UTC - INFO - pyls.python_ls - Server capabilities: {'executeCommandProvider': {'commands': []}, 'documentFormattingProvider': True, 'codeActionProvider': True, 'textDocumentSync': 2, 'experimental': {}, 'renameProvider': True, 'documentRangeFormattingProvider': True, 'definitionProvider': True, 'documentSymbolProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'referencesProvider': True, 'hoverProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}} 2018-02-17 23:57:41,878 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.ds.endElement(\'p\')\\n\\n elif name == \'czap\':\\n self.ds.endElement(\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-17 23:57:41,880 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 23:57:41,880 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-17 23:57:42,381 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 23:57:42,451 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}] 2018-02-17 23:57:42,452 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:57:42,452 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:57:42,452 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:57:42,452 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:57:42,452 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:57:42,453 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:57:42,453 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:57:42,453 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:57:42,548 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:57:42,548 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:57:42,548 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:57:42,548 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:57:42,548 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:57:42,549 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:57:42,549 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:57:42,549 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:57:42,549 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:57:42,554 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-17 23:57:42,554 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-17 23:59:31,466 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_even(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_even(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_even(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_even(EType.endElement, name=\'work\')\\n self.create_even(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_even(EType.endElement, name=\'osisText\')\\n self.create_even(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_even(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_even(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_even(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 23:59:31,469 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-17 23:59:31,971 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 23:59:32,107 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}] 2018-02-17 23:59:32,108 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:32,108 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:59:32,108 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:59:32,108 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:32,108 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:32,109 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:32,109 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:59:32,109 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:32,109 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:59:32,284 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:32,284 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:59:32,284 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:59:32,284 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:32,285 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:32,285 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:32,285 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:59:32,285 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:32,286 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:59:32,294 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-17 23:59:32,294 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-17 23:59:57,749 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', {})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', {})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.ds.startElement(\'p\', {})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.ds.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 23:59:57,755 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-17 23:59:58,256 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-17 23:59:58,371 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}] 2018-02-17 23:59:58,372 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:58,372 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:59:58,372 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:59:58,372 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:58,372 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:58,373 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:58,373 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:59:58,373 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:58,373 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-17 23:59:58,546 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:58,547 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-17 23:59:58,547 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-17 23:59:58,547 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:58,547 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:58,548 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-17 23:59:58,548 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-17 23:59:58,548 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-17 23:59:58,548 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-17 23:59:58,557 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-17 23:59:58,558 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:02:11,241 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement(\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-18 00:02:11,742 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:02:11,747 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:02:11,747 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:11,747 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:11,747 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:11,748 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:11,748 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:11,748 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:11,748 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:11,748 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:11,748 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:02:11,819 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:11,820 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:11,820 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:11,820 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:11,820 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:11,820 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:11,820 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:11,821 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:11,821 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:02:11,822 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'E901 TokenError: EOF in multi-line statement', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 0, 'line': 484}, 'end': {'character': 100, 'line': 484}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 295}, 'end': {'character': 68, 'line': 295}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 296}, 'end': {'character': 72, 'line': 296}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 297}, 'end': {'character': 66, 'line': 297}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 298}, 'end': {'character': 70, 'line': 298}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 299}, 'end': {'character': 60, 'line': 299}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 300}, 'end': {'character': 70, 'line': 300}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 301}, 'end': {'character': 18, 'line': 301}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 302}, 'end': {'character': 10, 'line': 302}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 303}, 'end': {'character': 69, 'line': 303}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 304}, 'end': {'character': 69, 'line': 304}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 305}, 'end': {'character': 10, 'line': 305}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 306}, 'end': {'character': 70, 'line': 306}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 307}, 'end': {'character': 70, 'line': 307}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 308}, 'end': {'character': 66, 'line': 308}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 309}, 'end': {'character': 19, 'line': 309}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 310}, 'end': {'character': 29, 'line': 310}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 12, 'line': 311}, 'end': {'character': 17, 'line': 311}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 313}, 'end': {'character': 70, 'line': 313}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 314}, 'end': {'character': 73, 'line': 314}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 315}, 'end': {'character': 40, 'line': 315}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 316}, 'end': {'character': 29, 'line': 316}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 12, 'line': 317}, 'end': {'character': 66, 'line': 317}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 319}, 'end': {'character': 70, 'line': 319}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 320}, 'end': {'character': 72, 'line': 320}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 321}, 'end': {'character': 34, 'line': 321}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 322}, 'end': {'character': 28, 'line': 322}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 325}, 'end': {'character': 68, 'line': 325}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 326}, 'end': {'character': 55, 'line': 326}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 327}, 'end': {'character': 70, 'line': 327}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 328}, 'end': {'character': 69, 'line': 328}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 329}, 'end': {'character': 65, 'line': 329}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 330}, 'end': {'character': 31, 'line': 330}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 333}, 'end': {'character': 70, 'line': 333}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 334}, 'end': {'character': 68, 'line': 334}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 335}, 'end': {'character': 26, 'line': 335}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 336}, 'end': {'character': 29, 'line': 336}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 340}, 'end': {'character': 67, 'line': 340}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 341}, 'end': {'character': 29, 'line': 341}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 344}, 'end': {'character': 68, 'line': 344}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 345}, 'end': {'character': 29, 'line': 345}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 348}, 'end': {'character': 47, 'line': 348}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 349}, 'end': {'character': 30, 'line': 349}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 352}, 'end': {'character': 46, 'line': 352}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 355}, 'end': {'character': 30, 'line': 355}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 369}, 'end': {'character': 33, 'line': 369}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 370}, 'end': {'character': 31, 'line': 370}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 372}, 'end': {'character': 43, 'line': 372}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 373}, 'end': {'character': 19, 'line': 373}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 374}, 'end': {'character': 18, 'line': 374}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 376}, 'end': {'character': 42, 'line': 376}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 377}, 'end': {'character': 32, 'line': 377}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 378}, 'end': {'character': 41, 'line': 378}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 380}, 'end': {'character': 30, 'line': 380}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 381}, 'end': {'character': 64, 'line': 381}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 384}, 'end': {'character': 77, 'line': 384}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 386}, 'end': {'character': 19, 'line': 386}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 387}, 'end': {'character': 18, 'line': 387}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 389}, 'end': {'character': 36, 'line': 389}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 391}, 'end': {'character': 17, 'line': 391}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 392}, 'end': {'character': 61, 'line': 392}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 393}, 'end': {'character': 32, 'line': 393}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 394}, 'end': {'character': 60, 'line': 394}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 395}, 'end': {'character': 34, 'line': 395}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 396}, 'end': {'character': 23, 'line': 396}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 397}, 'end': {'character': 18, 'line': 397}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 398}, 'end': {'character': 22, 'line': 398}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 399}, 'end': {'character': 41, 'line': 399}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 400}, 'end': {'character': 59, 'line': 400}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 401}, 'end': {'character': 34, 'line': 401}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 402}, 'end': {'character': 23, 'line': 402}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 403}, 'end': {'character': 23, 'line': 403}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 18, 'line': 404}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 405}, 'end': {'character': 18, 'line': 405}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 406}, 'end': {'character': 2, 'line': 406}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 407}, 'end': {'character': 32, 'line': 407}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 408}, 'end': {'character': 45, 'line': 408}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 409}, 'end': {'character': 18, 'line': 409}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 63, 'line': 412}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 413}, 'end': {'character': 33, 'line': 413}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 45, 'line': 414}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 415}, 'end': {'character': 18, 'line': 415}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 31, 'line': 417}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 418}, 'end': {'character': 28, 'line': 418}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 419}, 'end': {'character': 18, 'line': 419}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 421}, 'end': {'character': 78, 'line': 421}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 422}, 'end': {'character': 32, 'line': 422}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 423}, 'end': {'character': 31, 'line': 423}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 424}, 'end': {'character': 32, 'line': 424}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 425}, 'end': {'character': 44, 'line': 425}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 20, 'line': 426}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 427}, 'end': {'character': 44, 'line': 427}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 17, 'line': 428}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 54, 'line': 429}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 430}, 'end': {'character': 31, 'line': 430}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 431}, 'end': {'character': 43, 'line': 431}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 432}, 'end': {'character': 51, 'line': 432}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 433}, 'end': {'character': 29, 'line': 433}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 434}, 'end': {'character': 31, 'line': 434}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 435}, 'end': {'character': 18, 'line': 435}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 436}, 'end': {'character': 22, 'line': 436}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 34, 'line': 437}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 438}, 'end': {'character': 61, 'line': 438}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 439}, 'end': {'character': 65, 'line': 439}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 440}, 'end': {'character': 54, 'line': 440}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 441}, 'end': {'character': 47, 'line': 441}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 442}, 'end': {'character': 53, 'line': 442}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 443}, 'end': {'character': 63, 'line': 443}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 444}, 'end': {'character': 48, 'line': 444}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 45, 'line': 445}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 45, 'line': 446}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 447}, 'end': {'character': 53, 'line': 447}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 448}, 'end': {'character': 31, 'line': 448}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 23, 'line': 449}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 23, 'line': 450}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 451}, 'end': {'character': 18, 'line': 451}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 452}, 'end': {'character': 18, 'line': 452}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 454}, 'end': {'character': 32, 'line': 454}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 479}, 'end': {'character': 27, 'line': 479}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 353}, 'end': {'character': 43, 'line': 353}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 353}, 'end': {'character': 43, 'line': 353}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 356}, 'end': {'character': 47, 'line': 356}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 356}, 'end': {'character': 47, 'line': 356}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 13, 'line': 357}, 'end': {'character': 27, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 15, 'line': 357}, 'end': {'character': 27, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 41, 'line': 474}, 'end': {'character': 67, 'line': 474}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 43, 'line': 474}, 'end': {'character': 67, 'line': 474}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 475}, 'end': {'character': 37, 'line': 475}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 475}, 'end': {'character': 37, 'line': 475}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 476}, 'end': {'character': 37, 'line': 476}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 33, 'line': 476}, 'end': {'character': 37, 'line': 476}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 480}, 'end': {'character': 56, 'line': 480}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 480}, 'end': {'character': 56, 'line': 480}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 12, 'line': 310}, 'end': {'character': 41, 'line': 310}}}]] [hook] 2018-02-18 00:02:11,822 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'E901 TokenError: EOF in multi-line statement', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 0, 'line': 484}, 'end': {'character': 100, 'line': 484}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 295}, 'end': {'character': 68, 'line': 295}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 296}, 'end': {'character': 72, 'line': 296}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 297}, 'end': {'character': 66, 'line': 297}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 298}, 'end': {'character': 70, 'line': 298}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 299}, 'end': {'character': 60, 'line': 299}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 300}, 'end': {'character': 70, 'line': 300}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 301}, 'end': {'character': 18, 'line': 301}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 302}, 'end': {'character': 10, 'line': 302}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 303}, 'end': {'character': 69, 'line': 303}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 304}, 'end': {'character': 69, 'line': 304}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 305}, 'end': {'character': 10, 'line': 305}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 306}, 'end': {'character': 70, 'line': 306}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 307}, 'end': {'character': 70, 'line': 307}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 308}, 'end': {'character': 66, 'line': 308}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 309}, 'end': {'character': 19, 'line': 309}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 310}, 'end': {'character': 29, 'line': 310}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 12, 'line': 311}, 'end': {'character': 17, 'line': 311}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 313}, 'end': {'character': 70, 'line': 313}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 314}, 'end': {'character': 73, 'line': 314}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 315}, 'end': {'character': 40, 'line': 315}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 8, 'line': 316}, 'end': {'character': 29, 'line': 316}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 12, 'line': 317}, 'end': {'character': 66, 'line': 317}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 319}, 'end': {'character': 70, 'line': 319}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 320}, 'end': {'character': 72, 'line': 320}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 321}, 'end': {'character': 34, 'line': 321}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 322}, 'end': {'character': 28, 'line': 322}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 325}, 'end': {'character': 68, 'line': 325}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 326}, 'end': {'character': 55, 'line': 326}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 327}, 'end': {'character': 70, 'line': 327}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 328}, 'end': {'character': 69, 'line': 328}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 329}, 'end': {'character': 65, 'line': 329}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 330}, 'end': {'character': 31, 'line': 330}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 333}, 'end': {'character': 70, 'line': 333}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 334}, 'end': {'character': 68, 'line': 334}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 335}, 'end': {'character': 26, 'line': 335}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 336}, 'end': {'character': 29, 'line': 336}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 340}, 'end': {'character': 67, 'line': 340}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 341}, 'end': {'character': 29, 'line': 341}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 344}, 'end': {'character': 68, 'line': 344}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 345}, 'end': {'character': 29, 'line': 345}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 348}, 'end': {'character': 47, 'line': 348}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 349}, 'end': {'character': 30, 'line': 349}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 352}, 'end': {'character': 46, 'line': 352}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 355}, 'end': {'character': 30, 'line': 355}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 369}, 'end': {'character': 33, 'line': 369}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 370}, 'end': {'character': 31, 'line': 370}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 372}, 'end': {'character': 43, 'line': 372}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 373}, 'end': {'character': 19, 'line': 373}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 374}, 'end': {'character': 18, 'line': 374}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 376}, 'end': {'character': 42, 'line': 376}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 377}, 'end': {'character': 32, 'line': 377}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 378}, 'end': {'character': 41, 'line': 378}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 380}, 'end': {'character': 30, 'line': 380}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 381}, 'end': {'character': 64, 'line': 381}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 384}, 'end': {'character': 77, 'line': 384}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 386}, 'end': {'character': 19, 'line': 386}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 387}, 'end': {'character': 18, 'line': 387}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 389}, 'end': {'character': 36, 'line': 389}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 391}, 'end': {'character': 17, 'line': 391}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 392}, 'end': {'character': 61, 'line': 392}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 393}, 'end': {'character': 32, 'line': 393}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 394}, 'end': {'character': 60, 'line': 394}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 395}, 'end': {'character': 34, 'line': 395}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 396}, 'end': {'character': 23, 'line': 396}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 397}, 'end': {'character': 18, 'line': 397}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 398}, 'end': {'character': 22, 'line': 398}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 399}, 'end': {'character': 41, 'line': 399}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 400}, 'end': {'character': 59, 'line': 400}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 401}, 'end': {'character': 34, 'line': 401}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 402}, 'end': {'character': 23, 'line': 402}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 403}, 'end': {'character': 23, 'line': 403}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 18, 'line': 404}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 405}, 'end': {'character': 18, 'line': 405}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 406}, 'end': {'character': 2, 'line': 406}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 407}, 'end': {'character': 32, 'line': 407}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 408}, 'end': {'character': 45, 'line': 408}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 409}, 'end': {'character': 18, 'line': 409}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 63, 'line': 412}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 413}, 'end': {'character': 33, 'line': 413}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 45, 'line': 414}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 415}, 'end': {'character': 18, 'line': 415}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 31, 'line': 417}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 418}, 'end': {'character': 28, 'line': 418}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 419}, 'end': {'character': 18, 'line': 419}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 421}, 'end': {'character': 78, 'line': 421}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 422}, 'end': {'character': 32, 'line': 422}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 423}, 'end': {'character': 31, 'line': 423}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 424}, 'end': {'character': 32, 'line': 424}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 425}, 'end': {'character': 44, 'line': 425}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 20, 'line': 426}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 427}, 'end': {'character': 44, 'line': 427}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 17, 'line': 428}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 54, 'line': 429}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 430}, 'end': {'character': 31, 'line': 430}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 431}, 'end': {'character': 43, 'line': 431}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 432}, 'end': {'character': 51, 'line': 432}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 433}, 'end': {'character': 29, 'line': 433}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 434}, 'end': {'character': 31, 'line': 434}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 435}, 'end': {'character': 18, 'line': 435}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 436}, 'end': {'character': 22, 'line': 436}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 34, 'line': 437}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 438}, 'end': {'character': 61, 'line': 438}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 439}, 'end': {'character': 65, 'line': 439}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 440}, 'end': {'character': 54, 'line': 440}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 441}, 'end': {'character': 47, 'line': 441}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 442}, 'end': {'character': 53, 'line': 442}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 443}, 'end': {'character': 63, 'line': 443}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 444}, 'end': {'character': 48, 'line': 444}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 45, 'line': 445}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 45, 'line': 446}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 447}, 'end': {'character': 53, 'line': 447}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 448}, 'end': {'character': 31, 'line': 448}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 23, 'line': 449}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 23, 'line': 450}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 451}, 'end': {'character': 18, 'line': 451}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 452}, 'end': {'character': 18, 'line': 452}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 454}, 'end': {'character': 32, 'line': 454}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 479}, 'end': {'character': 27, 'line': 479}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 353}, 'end': {'character': 43, 'line': 353}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 353}, 'end': {'character': 43, 'line': 353}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 356}, 'end': {'character': 47, 'line': 356}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 356}, 'end': {'character': 47, 'line': 356}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 13, 'line': 357}, 'end': {'character': 27, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 15, 'line': 357}, 'end': {'character': 27, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 41, 'line': 474}, 'end': {'character': 67, 'line': 474}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 43, 'line': 474}, 'end': {'character': 67, 'line': 474}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 475}, 'end': {'character': 37, 'line': 475}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 475}, 'end': {'character': 37, 'line': 475}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 476}, 'end': {'character': 37, 'line': 476}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 33, 'line': 476}, 'end': {'character': 37, 'line': 476}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 480}, 'end': {'character': 56, 'line': 480}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 480}, 'end': {'character': 56, 'line': 480}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 12, 'line': 310}, 'end': {'character': 41, 'line': 310}}}]} 2018-02-18 00:02:20,145 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\', attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-18 00:02:20,646 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:02:20,695 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:20,696 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:02:20,783 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:20,784 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:02:20,788 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 293}, 'end': {'character': 83, 'line': 293}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:02:20,789 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 454}, 'end': {'character': 19, 'line': 454}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (82 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 293}, 'end': {'character': 83, 'line': 293}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 371}, 'end': {'character': 85, 'line': 371}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 379}, 'end': {'character': 85, 'line': 379}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 99, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 81, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 390}, 'end': {'character': 90, 'line': 390}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 411}, 'end': {'character': 85, 'line': 411}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 483}, 'end': {'character': 55, 'line': 483}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:02:24,665 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-18 00:02:25,167 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:02:25,215 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:02:25,216 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:25,216 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:25,216 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:25,216 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:25,216 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:25,216 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:25,217 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:25,217 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:25,217 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:02:25,297 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:25,297 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:25,297 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:25,297 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:25,298 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:25,298 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:25,298 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:25,298 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:25,298 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:02:25,302 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:02:25,302 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:02:25,399 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.ds.characters(TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.ds.characters(\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-18 00:02:25,401 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-18 00:02:25,906 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:02:26,004 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:02:26,004 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:26,005 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:26,005 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:26,005 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:26,005 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:26,006 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:26,007 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:26,007 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:26,007 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:02:26,182 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:26,182 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:02:26,182 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:02:26,182 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:26,183 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:26,183 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:02:26,183 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:02:26,183 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:02:26,184 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:02:26,191 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:02:26,191 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:03:52,333 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-18 00:03:52,335 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-18 00:03:52,836 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:03:52,958 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:03:52,958 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:03:52,959 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:03:52,959 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:03:52,959 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:03:52,959 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:03:52,959 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:03:52,960 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:03:52,960 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:03:52,960 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:03:53,137 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:03:53,138 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:03:53,138 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:03:53,138 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:03:53,138 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:03:53,139 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:03:53,139 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:03:53,139 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:03:53,139 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:03:53,146 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:03:53,147 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:04:35,527 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.create_event(EType.endElement, name=\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-18 00:04:35,529 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-18 00:04:36,030 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:04:36,082 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:04:36,083 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:04:36,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:04:36,174 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:04:36,178 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:04:36,179 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:05:14,915 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.create_event(EType.startElement, name=\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-18 00:05:15,416 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:05:15,420 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:05:15,420 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:15,420 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:15,420 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:15,421 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:15,421 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:15,421 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:15,421 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:15,421 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:15,421 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:15,492 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:15,493 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:15,493 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:05:15,493 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:05:15,493 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:05:36,259 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-18 00:05:36,760 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:05:36,765 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:05:36,765 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:36,765 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:36,766 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:05:36,849 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:36,849 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:36,849 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:36,849 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:36,849 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:36,850 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:36,850 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:36,850 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:36,850 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:05:36,851 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:05:36,851 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:05:37,286 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.create_event(EType.startElement, name=\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-18 00:05:37,289 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-18 00:05:37,790 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:05:37,803 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:05:37,803 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:37,803 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:37,803 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:37,804 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:37,804 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:37,804 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:37,804 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:37,805 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:37,805 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:05:37,988 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:37,989 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:37,989 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:37,989 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:37,989 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:37,990 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:37,990 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:37,990 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:37,990 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:05:37,991 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:05:37,991 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:05:56,129 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-18 00:05:56,631 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:05:56,634 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:56,635 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:05:56,706 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:56,706 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:56,707 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:05:56,708 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:05:56,708 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:05:57,670 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-18 00:05:57,672 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-18 00:05:58,172 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:05:58,180 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:05:58,180 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:58,180 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:58,180 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:58,180 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:58,181 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:58,181 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:58,181 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:58,181 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:58,182 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:05:58,339 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:58,340 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:05:58,340 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:05:58,340 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:58,340 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:58,341 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:05:58,341 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:05:58,341 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:05:58,341 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:05:58,342 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:05:58,342 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:06:21,329 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-18 00:06:21,831 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:06:21,836 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:06:21,836 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:21,836 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:21,836 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:21,836 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:21,836 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:21,837 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:21,837 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:21,837 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:21,837 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:06:21,868 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:21,868 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:21,869 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:06:21,870 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 134}, 'end': {'character': 61, 'line': 134}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 135}, 'end': {'character': 47, 'line': 135}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 136}, 'end': {'character': 57, 'line': 136}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 137}, 'end': {'character': 63, 'line': 137}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 138}, 'end': {'character': 48, 'line': 138}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 139}, 'end': {'character': 57, 'line': 139}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 140}, 'end': {'character': 59, 'line': 140}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 142}, 'end': {'character': 27, 'line': 142}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 133}, 'end': {'character': 41, 'line': 133}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 136}, 'end': {'character': 57, 'line': 136}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 139}, 'end': {'character': 57, 'line': 139}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 140}, 'end': {'character': 59, 'line': 140}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 143}, 'end': {'character': 61, 'line': 143}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 144}, 'end': {'character': 57, 'line': 144}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 12, 'line': 151}, 'end': {'character': 49, 'line': 151}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 152}, 'end': {'character': 29, 'line': 152}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 52, 'line': 157}, 'end': {'character': 66, 'line': 157}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:06:21,870 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 134}, 'end': {'character': 61, 'line': 134}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 135}, 'end': {'character': 47, 'line': 135}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 136}, 'end': {'character': 57, 'line': 136}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 137}, 'end': {'character': 63, 'line': 137}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 138}, 'end': {'character': 48, 'line': 138}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 139}, 'end': {'character': 57, 'line': 139}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 140}, 'end': {'character': 59, 'line': 140}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 142}, 'end': {'character': 27, 'line': 142}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 133}, 'end': {'character': 41, 'line': 133}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 136}, 'end': {'character': 57, 'line': 136}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 139}, 'end': {'character': 57, 'line': 139}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 140}, 'end': {'character': 59, 'line': 140}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 143}, 'end': {'character': 61, 'line': 143}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 144}, 'end': {'character': 57, 'line': 144}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 12, 'line': 151}, 'end': {'character': 49, 'line': 151}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 152}, 'end': {'character': 29, 'line': 152}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 52, 'line': 157}, 'end': {'character': 66, 'line': 157}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:06:27,626 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-18 00:06:28,127 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:06:28,131 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:06:28,131 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:28,132 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:06:28,202 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:28,202 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:28,202 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:28,202 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:28,202 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:28,203 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:28,203 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:28,203 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:28,203 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:06:28,203 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:06:28,203 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:06:39,330 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.create_event(EType.endElement, name=\'work\')\\n self.create_event(EType.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-18 00:06:39,832 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:06:39,836 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:06:39,836 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:39,836 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:39,837 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:06:39,920 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:39,921 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:06:39,922 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:06:39,922 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:06:49,114 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement, name=\'work\')\\n self.endElement, name=\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-18 00:06:49,616 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:06:49,619 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:49,620 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:49,668 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:49,669 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:49,669 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:06:49,670 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 140}, 'end': {'character': 40, 'line': 140}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 142}, 'end': {'character': 27, 'line': 142}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 163}, 'end': {'character': 35, 'line': 163}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 171}, 'end': {'character': 46, 'line': 171}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 182}, 'end': {'character': 52, 'line': 182}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 190}, 'end': {'character': 33, 'line': 190}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 72, 'line': 191}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 192}, 'end': {'character': 17, 'line': 192}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 193}, 'end': {'character': 54, 'line': 193}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 194}, 'end': {'character': 74, 'line': 194}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 195}, 'end': {'character': 71, 'line': 195}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 197}, 'end': {'character': 18, 'line': 197}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 198}, 'end': {'character': 22, 'line': 198}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 199}, 'end': {'character': 74, 'line': 199}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 200}, 'end': {'character': 79, 'line': 200}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 37, 'line': 202}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 66, 'line': 203}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 205}, 'end': {'character': 23, 'line': 205}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 18, 'line': 206}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 207}, 'end': {'character': 18, 'line': 207}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 209}, 'end': {'character': 24, 'line': 209}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 216}, 'end': {'character': 73, 'line': 216}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 222}, 'end': {'character': 57, 'line': 222}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 231}, 'end': {'character': 41, 'line': 231}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 236}, 'end': {'character': 38, 'line': 236}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 139}, 'end': {'character': 41, 'line': 139}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 20, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 16, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 240}, 'end': {'character': 32, 'line': 240}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 247}, 'end': {'character': 28, 'line': 247}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 257}, 'end': {'character': 29, 'line': 257}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 272}, 'end': {'character': 39, 'line': 272}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 273}, 'end': {'character': 36, 'line': 273}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 274}, 'end': {'character': 70, 'line': 274}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 275}, 'end': {'character': 41, 'line': 275}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 276}, 'end': {'character': 34, 'line': 276}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 277}, 'end': {'character': 37, 'line': 277}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 278}, 'end': {'character': 56, 'line': 278}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 279}, 'end': {'character': 26, 'line': 279}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 280}, 'end': {'character': 66, 'line': 280}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 281}, 'end': {'character': 45, 'line': 281}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 282}, 'end': {'character': 22, 'line': 282}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 283}, 'end': {'character': 15, 'line': 283}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 284}, 'end': {'character': 19, 'line': 284}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 286}, 'end': {'character': 26, 'line': 286}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 289}, 'end': {'character': 38, 'line': 289}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 292}, 'end': {'character': 29, 'line': 292}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 30, 'line': 294}, 'end': {'character': 53, 'line': 294}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 296}, 'end': {'character': 68, 'line': 296}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 297}, 'end': {'character': 72, 'line': 297}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 298}, 'end': {'character': 66, 'line': 298}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 299}, 'end': {'character': 70, 'line': 299}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 300}, 'end': {'character': 60, 'line': 300}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 301}, 'end': {'character': 70, 'line': 301}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 302}, 'end': {'character': 18, 'line': 302}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 303}, 'end': {'character': 10, 'line': 303}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 304}, 'end': {'character': 69, 'line': 304}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 305}, 'end': {'character': 69, 'line': 305}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 306}, 'end': {'character': 10, 'line': 306}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 307}, 'end': {'character': 70, 'line': 307}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 308}, 'end': {'character': 70, 'line': 308}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 309}, 'end': {'character': 66, 'line': 309}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 310}, 'end': {'character': 19, 'line': 310}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 311}, 'end': {'character': 29, 'line': 311}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 314}, 'end': {'character': 70, 'line': 314}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 315}, 'end': {'character': 73, 'line': 315}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 316}, 'end': {'character': 40, 'line': 316}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 317}, 'end': {'character': 29, 'line': 317}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 320}, 'end': {'character': 70, 'line': 320}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 321}, 'end': {'character': 72, 'line': 321}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 322}, 'end': {'character': 34, 'line': 322}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 323}, 'end': {'character': 28, 'line': 323}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 326}, 'end': {'character': 68, 'line': 326}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 327}, 'end': {'character': 55, 'line': 327}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 328}, 'end': {'character': 70, 'line': 328}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 329}, 'end': {'character': 69, 'line': 329}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 330}, 'end': {'character': 65, 'line': 330}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 331}, 'end': {'character': 31, 'line': 331}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 334}, 'end': {'character': 70, 'line': 334}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 335}, 'end': {'character': 68, 'line': 335}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 336}, 'end': {'character': 26, 'line': 336}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 337}, 'end': {'character': 29, 'line': 337}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 341}, 'end': {'character': 67, 'line': 341}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 342}, 'end': {'character': 29, 'line': 342}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 345}, 'end': {'character': 68, 'line': 345}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 346}, 'end': {'character': 29, 'line': 346}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 349}, 'end': {'character': 47, 'line': 349}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 350}, 'end': {'character': 30, 'line': 350}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 353}, 'end': {'character': 46, 'line': 353}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 356}, 'end': {'character': 30, 'line': 356}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 343}, 'end': {'character': 60, 'line': 343}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 347}, 'end': {'character': 60, 'line': 347}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 351}, 'end': {'character': 60, 'line': 351}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 54, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 68, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 13, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 15, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 360}, 'end': {'character': 33, 'line': 360}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:06:49,670 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 140}, 'end': {'character': 40, 'line': 140}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 142}, 'end': {'character': 27, 'line': 142}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 163}, 'end': {'character': 35, 'line': 163}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 171}, 'end': {'character': 46, 'line': 171}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 182}, 'end': {'character': 52, 'line': 182}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 190}, 'end': {'character': 33, 'line': 190}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 72, 'line': 191}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 192}, 'end': {'character': 17, 'line': 192}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 193}, 'end': {'character': 54, 'line': 193}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 194}, 'end': {'character': 74, 'line': 194}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 195}, 'end': {'character': 71, 'line': 195}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 197}, 'end': {'character': 18, 'line': 197}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 198}, 'end': {'character': 22, 'line': 198}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 199}, 'end': {'character': 74, 'line': 199}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 200}, 'end': {'character': 79, 'line': 200}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 37, 'line': 202}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 66, 'line': 203}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 205}, 'end': {'character': 23, 'line': 205}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 18, 'line': 206}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 0, 'line': 207}, 'end': {'character': 18, 'line': 207}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 209}, 'end': {'character': 24, 'line': 209}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 216}, 'end': {'character': 73, 'line': 216}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 222}, 'end': {'character': 57, 'line': 222}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 231}, 'end': {'character': 41, 'line': 231}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 236}, 'end': {'character': 38, 'line': 236}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 139}, 'end': {'character': 41, 'line': 139}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 20, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 16, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 240}, 'end': {'character': 32, 'line': 240}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 247}, 'end': {'character': 28, 'line': 247}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 257}, 'end': {'character': 29, 'line': 257}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 272}, 'end': {'character': 39, 'line': 272}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 273}, 'end': {'character': 36, 'line': 273}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 274}, 'end': {'character': 70, 'line': 274}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 275}, 'end': {'character': 41, 'line': 275}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 276}, 'end': {'character': 34, 'line': 276}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 277}, 'end': {'character': 37, 'line': 277}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 278}, 'end': {'character': 56, 'line': 278}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 279}, 'end': {'character': 26, 'line': 279}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 280}, 'end': {'character': 66, 'line': 280}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 281}, 'end': {'character': 45, 'line': 281}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 282}, 'end': {'character': 22, 'line': 282}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 283}, 'end': {'character': 15, 'line': 283}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 284}, 'end': {'character': 19, 'line': 284}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 286}, 'end': {'character': 26, 'line': 286}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 289}, 'end': {'character': 38, 'line': 289}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 292}, 'end': {'character': 29, 'line': 292}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 30, 'line': 294}, 'end': {'character': 53, 'line': 294}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 296}, 'end': {'character': 68, 'line': 296}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 297}, 'end': {'character': 72, 'line': 297}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 298}, 'end': {'character': 66, 'line': 298}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 299}, 'end': {'character': 70, 'line': 299}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 300}, 'end': {'character': 60, 'line': 300}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 301}, 'end': {'character': 70, 'line': 301}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 302}, 'end': {'character': 18, 'line': 302}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 303}, 'end': {'character': 10, 'line': 303}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 304}, 'end': {'character': 69, 'line': 304}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 305}, 'end': {'character': 69, 'line': 305}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 306}, 'end': {'character': 10, 'line': 306}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 307}, 'end': {'character': 70, 'line': 307}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 308}, 'end': {'character': 70, 'line': 308}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 309}, 'end': {'character': 66, 'line': 309}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 310}, 'end': {'character': 19, 'line': 310}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 311}, 'end': {'character': 29, 'line': 311}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 314}, 'end': {'character': 70, 'line': 314}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 315}, 'end': {'character': 73, 'line': 315}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 316}, 'end': {'character': 40, 'line': 316}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 317}, 'end': {'character': 29, 'line': 317}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 320}, 'end': {'character': 70, 'line': 320}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 321}, 'end': {'character': 72, 'line': 321}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 322}, 'end': {'character': 34, 'line': 322}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 323}, 'end': {'character': 28, 'line': 323}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 326}, 'end': {'character': 68, 'line': 326}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 327}, 'end': {'character': 55, 'line': 327}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 328}, 'end': {'character': 70, 'line': 328}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 329}, 'end': {'character': 69, 'line': 329}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 330}, 'end': {'character': 65, 'line': 330}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 331}, 'end': {'character': 31, 'line': 331}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 334}, 'end': {'character': 70, 'line': 334}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 335}, 'end': {'character': 68, 'line': 335}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 336}, 'end': {'character': 26, 'line': 336}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 337}, 'end': {'character': 29, 'line': 337}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 341}, 'end': {'character': 67, 'line': 341}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 342}, 'end': {'character': 29, 'line': 342}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 345}, 'end': {'character': 68, 'line': 345}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 346}, 'end': {'character': 29, 'line': 346}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 349}, 'end': {'character': 47, 'line': 349}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 350}, 'end': {'character': 30, 'line': 350}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 353}, 'end': {'character': 46, 'line': 353}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 356}, 'end': {'character': 30, 'line': 356}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 343}, 'end': {'character': 60, 'line': 343}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 347}, 'end': {'character': 60, 'line': 347}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 351}, 'end': {'character': 60, 'line': 351}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 54, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 68, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 13, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 15, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 360}, 'end': {'character': 33, 'line': 360}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:06:56,011 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":19}}}' 2018-02-18 00:06:56,513 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:06:56,520 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:06:56,520 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:56,521 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:56,521 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:56,521 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:56,521 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:56,521 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:56,522 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:56,522 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:56,522 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:06:56,571 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:56,571 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:56,572 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:56,572 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:56,572 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:56,572 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:56,573 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:56,573 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:56,573 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:06:56,574 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 142}, 'end': {'character': 27, 'line': 142}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 143}, 'end': {'character': 61, 'line': 143}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 144}, 'end': {'character': 57, 'line': 144}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 12, 'line': 151}, 'end': {'character': 49, 'line': 151}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 152}, 'end': {'character': 29, 'line': 152}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 52, 'line': 157}, 'end': {'character': 66, 'line': 157}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:06:56,574 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 142}, 'end': {'character': 27, 'line': 142}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 143}, 'end': {'character': 61, 'line': 143}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 48, 'line': 144}, 'end': {'character': 57, 'line': 144}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 12, 'line': 151}, 'end': {'character': 49, 'line': 151}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 152}, 'end': {'character': 29, 'line': 152}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 52, 'line': 157}, 'end': {'character': 66, 'line': 157}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:06:57,999 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds..endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-18 00:06:58,001 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-18 00:06:58,502 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:06:58,505 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:58,506 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:06:58,583 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:58,583 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:06:58,583 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:06:58,584 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:58,584 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:58,584 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:06:58,584 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:06:58,584 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:06:58,584 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:06:58,585 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]] [hook] 2018-02-18 00:06:58,585 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 17, 'line': 110}, 'end': {'character': 61, 'line': 110}}}]} 2018-02-18 00:07:10,349 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.create_event(EType.endElement, name=\'osisText\')\\n self.create_event(EType.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-18 00:07:10,351 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-18 00:07:10,852 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:07:10,948 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:07:10,948 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:10,949 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:10,949 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:10,949 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:10,949 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:10,949 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:10,950 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:10,950 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:10,950 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:07:11,044 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:11,045 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:11,046 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:07:11,050 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:07:11,050 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:07:24,954 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement, name=\'osisText\')\\n self.endElement, name=\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-18 00:07:25,455 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:07:25,462 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:07:25,462 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:25,462 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:25,462 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:25,462 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:25,462 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:25,463 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:25,463 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:25,463 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:25,463 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:07:25,556 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:25,557 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:25,557 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:25,557 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:25,557 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:25,557 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:25,558 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:25,558 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:25,558 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:07:25,560 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 144}, 'end': {'character': 38, 'line': 144}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 163}, 'end': {'character': 35, 'line': 163}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 190}, 'end': {'character': 33, 'line': 190}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 72, 'line': 191}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 192}, 'end': {'character': 17, 'line': 192}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 193}, 'end': {'character': 54, 'line': 193}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 194}, 'end': {'character': 74, 'line': 194}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 195}, 'end': {'character': 71, 'line': 195}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 197}, 'end': {'character': 18, 'line': 197}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 198}, 'end': {'character': 22, 'line': 198}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 199}, 'end': {'character': 74, 'line': 199}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 200}, 'end': {'character': 79, 'line': 200}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 37, 'line': 202}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 66, 'line': 203}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 205}, 'end': {'character': 23, 'line': 205}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 18, 'line': 206}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 207}, 'end': {'character': 18, 'line': 207}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 222}, 'end': {'character': 57, 'line': 222}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 236}, 'end': {'character': 38, 'line': 236}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 143}, 'end': {'character': 45, 'line': 143}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 20, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 16, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 240}, 'end': {'character': 32, 'line': 240}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 247}, 'end': {'character': 28, 'line': 247}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 257}, 'end': {'character': 29, 'line': 257}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 272}, 'end': {'character': 39, 'line': 272}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 273}, 'end': {'character': 36, 'line': 273}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 274}, 'end': {'character': 70, 'line': 274}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 275}, 'end': {'character': 41, 'line': 275}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 276}, 'end': {'character': 34, 'line': 276}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 277}, 'end': {'character': 37, 'line': 277}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 278}, 'end': {'character': 56, 'line': 278}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 279}, 'end': {'character': 26, 'line': 279}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 280}, 'end': {'character': 66, 'line': 280}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 281}, 'end': {'character': 45, 'line': 281}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 282}, 'end': {'character': 22, 'line': 282}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 283}, 'end': {'character': 15, 'line': 283}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 284}, 'end': {'character': 19, 'line': 284}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 286}, 'end': {'character': 26, 'line': 286}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 289}, 'end': {'character': 38, 'line': 289}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 292}, 'end': {'character': 29, 'line': 292}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 30, 'line': 294}, 'end': {'character': 53, 'line': 294}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 296}, 'end': {'character': 68, 'line': 296}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 297}, 'end': {'character': 72, 'line': 297}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 298}, 'end': {'character': 66, 'line': 298}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 299}, 'end': {'character': 70, 'line': 299}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 300}, 'end': {'character': 60, 'line': 300}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 301}, 'end': {'character': 70, 'line': 301}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 302}, 'end': {'character': 18, 'line': 302}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 303}, 'end': {'character': 10, 'line': 303}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 304}, 'end': {'character': 69, 'line': 304}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 305}, 'end': {'character': 69, 'line': 305}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 306}, 'end': {'character': 10, 'line': 306}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 307}, 'end': {'character': 70, 'line': 307}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 308}, 'end': {'character': 70, 'line': 308}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 309}, 'end': {'character': 66, 'line': 309}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 310}, 'end': {'character': 19, 'line': 310}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 311}, 'end': {'character': 29, 'line': 311}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 314}, 'end': {'character': 70, 'line': 314}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 315}, 'end': {'character': 73, 'line': 315}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 316}, 'end': {'character': 40, 'line': 316}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 317}, 'end': {'character': 29, 'line': 317}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 320}, 'end': {'character': 70, 'line': 320}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 321}, 'end': {'character': 72, 'line': 321}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 322}, 'end': {'character': 34, 'line': 322}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 323}, 'end': {'character': 28, 'line': 323}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 326}, 'end': {'character': 68, 'line': 326}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 327}, 'end': {'character': 55, 'line': 327}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 328}, 'end': {'character': 70, 'line': 328}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 329}, 'end': {'character': 69, 'line': 329}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 330}, 'end': {'character': 65, 'line': 330}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 331}, 'end': {'character': 31, 'line': 331}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 334}, 'end': {'character': 70, 'line': 334}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 335}, 'end': {'character': 68, 'line': 335}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 336}, 'end': {'character': 26, 'line': 336}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 337}, 'end': {'character': 29, 'line': 337}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 341}, 'end': {'character': 67, 'line': 341}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 342}, 'end': {'character': 29, 'line': 342}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 345}, 'end': {'character': 68, 'line': 345}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 346}, 'end': {'character': 29, 'line': 346}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 349}, 'end': {'character': 47, 'line': 349}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 350}, 'end': {'character': 30, 'line': 350}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 353}, 'end': {'character': 46, 'line': 353}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 356}, 'end': {'character': 30, 'line': 356}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 343}, 'end': {'character': 60, 'line': 343}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 347}, 'end': {'character': 60, 'line': 347}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 351}, 'end': {'character': 60, 'line': 351}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 54, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 68, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 13, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 15, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 360}, 'end': {'character': 33, 'line': 360}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 44, 'line': 143}, 'end': {'character': 89, 'line': 143}}}]] [hook] 2018-02-18 00:07:25,560 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 144}, 'end': {'character': 38, 'line': 144}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 163}, 'end': {'character': 35, 'line': 163}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 190}, 'end': {'character': 33, 'line': 190}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 72, 'line': 191}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 192}, 'end': {'character': 17, 'line': 192}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 193}, 'end': {'character': 54, 'line': 193}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 194}, 'end': {'character': 74, 'line': 194}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 195}, 'end': {'character': 71, 'line': 195}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 197}, 'end': {'character': 18, 'line': 197}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 198}, 'end': {'character': 22, 'line': 198}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 199}, 'end': {'character': 74, 'line': 199}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 200}, 'end': {'character': 79, 'line': 200}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 37, 'line': 202}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 66, 'line': 203}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 205}, 'end': {'character': 23, 'line': 205}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 18, 'line': 206}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 207}, 'end': {'character': 18, 'line': 207}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 222}, 'end': {'character': 57, 'line': 222}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 16, 'line': 236}, 'end': {'character': 38, 'line': 236}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 143}, 'end': {'character': 45, 'line': 143}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 161}, 'end': {'character': 36, 'line': 161}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 5, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 7, 'line': 168}, 'end': {'character': 60, 'line': 168}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 173}, 'end': {'character': 29, 'line': 173}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 174}, 'end': {'character': 34, 'line': 174}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 175}, 'end': {'character': 33, 'line': 175}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 176}, 'end': {'character': 33, 'line': 176}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 21, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 23, 'line': 177}, 'end': {'character': 27, 'line': 177}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 178}, 'end': {'character': 29, 'line': 178}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 179}, 'end': {'character': 27, 'line': 179}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 20, 'line': 180}, 'end': {'character': 24, 'line': 180}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 184}, 'end': {'character': 23, 'line': 184}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 16, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 18, 'line': 210}, 'end': {'character': 22, 'line': 210}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 218}, 'end': {'character': 23, 'line': 218}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 233}, 'end': {'character': 43, 'line': 233}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 240}, 'end': {'character': 32, 'line': 240}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 247}, 'end': {'character': 28, 'line': 247}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 257}, 'end': {'character': 29, 'line': 257}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 272}, 'end': {'character': 39, 'line': 272}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 273}, 'end': {'character': 36, 'line': 273}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 274}, 'end': {'character': 70, 'line': 274}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 275}, 'end': {'character': 41, 'line': 275}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 276}, 'end': {'character': 34, 'line': 276}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 277}, 'end': {'character': 37, 'line': 277}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 278}, 'end': {'character': 56, 'line': 278}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 279}, 'end': {'character': 26, 'line': 279}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 280}, 'end': {'character': 66, 'line': 280}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 281}, 'end': {'character': 45, 'line': 281}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 282}, 'end': {'character': 22, 'line': 282}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 283}, 'end': {'character': 15, 'line': 283}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 284}, 'end': {'character': 19, 'line': 284}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 286}, 'end': {'character': 26, 'line': 286}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 289}, 'end': {'character': 38, 'line': 289}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 292}, 'end': {'character': 29, 'line': 292}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 30, 'line': 294}, 'end': {'character': 53, 'line': 294}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 296}, 'end': {'character': 68, 'line': 296}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 297}, 'end': {'character': 72, 'line': 297}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 298}, 'end': {'character': 66, 'line': 298}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 299}, 'end': {'character': 70, 'line': 299}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 300}, 'end': {'character': 60, 'line': 300}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 301}, 'end': {'character': 70, 'line': 301}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 302}, 'end': {'character': 18, 'line': 302}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 303}, 'end': {'character': 10, 'line': 303}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 304}, 'end': {'character': 69, 'line': 304}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 305}, 'end': {'character': 69, 'line': 305}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 306}, 'end': {'character': 10, 'line': 306}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 307}, 'end': {'character': 70, 'line': 307}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 308}, 'end': {'character': 70, 'line': 308}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 309}, 'end': {'character': 66, 'line': 309}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 310}, 'end': {'character': 19, 'line': 310}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 311}, 'end': {'character': 29, 'line': 311}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 314}, 'end': {'character': 70, 'line': 314}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 315}, 'end': {'character': 73, 'line': 315}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 316}, 'end': {'character': 40, 'line': 316}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 317}, 'end': {'character': 29, 'line': 317}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 320}, 'end': {'character': 70, 'line': 320}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 321}, 'end': {'character': 72, 'line': 321}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 322}, 'end': {'character': 34, 'line': 322}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 323}, 'end': {'character': 28, 'line': 323}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 326}, 'end': {'character': 68, 'line': 326}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 327}, 'end': {'character': 55, 'line': 327}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 328}, 'end': {'character': 70, 'line': 328}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 329}, 'end': {'character': 69, 'line': 329}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 330}, 'end': {'character': 65, 'line': 330}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 331}, 'end': {'character': 31, 'line': 331}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 334}, 'end': {'character': 70, 'line': 334}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 335}, 'end': {'character': 68, 'line': 335}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 336}, 'end': {'character': 26, 'line': 336}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 337}, 'end': {'character': 29, 'line': 337}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 31, 'line': 237}, 'end': {'character': 73, 'line': 237}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 248}, 'end': {'character': 41, 'line': 248}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 249}, 'end': {'character': 63, 'line': 249}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 250}, 'end': {'character': 66, 'line': 250}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 25, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 27, 'line': 258}, 'end': {'character': 39, 'line': 258}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 259}, 'end': {'character': 66, 'line': 259}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 22, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 24, 'line': 260}, 'end': {'character': 57, 'line': 260}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 270}, 'end': {'character': 43, 'line': 270}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 341}, 'end': {'character': 67, 'line': 341}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 342}, 'end': {'character': 29, 'line': 342}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 345}, 'end': {'character': 68, 'line': 345}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 346}, 'end': {'character': 29, 'line': 346}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 349}, 'end': {'character': 47, 'line': 349}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 350}, 'end': {'character': 30, 'line': 350}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 353}, 'end': {'character': 46, 'line': 353}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 356}, 'end': {'character': 30, 'line': 356}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 34, 'line': 339}, 'end': {'character': 60, 'line': 339}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 343}, 'end': {'character': 60, 'line': 343}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 347}, 'end': {'character': 60, 'line': 347}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 32, 'line': 351}, 'end': {'character': 60, 'line': 351}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 54, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 68, 'line': 359}, 'end': {'character': 71, 'line': 359}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 29, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 31, 'line': 354}, 'end': {'character': 43, 'line': 354}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 17, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 19, 'line': 357}, 'end': {'character': 47, 'line': 357}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 13, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 15, 'line': 358}, 'end': {'character': 27, 'line': 358}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 360}, 'end': {'character': 33, 'line': 360}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 44, 'line': 143}, 'end': {'character': 89, 'line': 143}}}]} 2018-02-18 00:07:31,412 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":23}}}' 2018-02-18 00:07:31,913 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:07:31,921 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 00:07:31,921 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:31,922 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:31,922 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:31,922 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:31,922 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:31,923 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:31,923 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:31,923 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:31,923 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:07:31,968 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:31,968 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:31,968 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:31,968 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:31,968 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:31,969 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:31,969 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:31,969 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:31,969 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:07:31,969 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 12, 'line': 151}, 'end': {'character': 49, 'line': 151}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 152}, 'end': {'character': 29, 'line': 152}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 52, 'line': 157}, 'end': {'character': 66, 'line': 157}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}], [{'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 32, 'line': 144}, 'end': {'character': 66, 'line': 144}}}]] [hook] 2018-02-18 00:07:31,970 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 4, 'line': 146}, 'end': {'character': 41, 'line': 146}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 26, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 148}, 'end': {'character': 34, 'line': 148}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 12, 'line': 151}, 'end': {'character': 49, 'line': 151}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 8, 'line': 152}, 'end': {'character': 29, 'line': 152}}, 'severity': 2}, {'message': 'E122 continuation line missing indentation or outdented', 'source': 'pycodestyle', 'code': 'E122', 'range': {'start': {'character': 4, 'line': 155}, 'end': {'character': 32, 'line': 155}}, 'severity': 2}, {'message': 'E111 indentation is not a multiple of four', 'source': 'pycodestyle', 'code': 'E111', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E113 unexpected indentation', 'source': 'pycodestyle', 'code': 'E113', 'range': {'start': {'character': 33, 'line': 150}, 'end': {'character': 77, 'line': 150}}, 'severity': 2}, {'message': 'E225 missing whitespace around operator', 'source': 'pycodestyle', 'code': 'E225', 'range': {'start': {'character': 52, 'line': 157}, 'end': {'character': 66, 'line': 157}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 28, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E251 unexpected spaces around keyword / parameter equals', 'source': 'pycodestyle', 'code': 'E251', 'range': {'start': {'character': 30, 'line': 153}, 'end': {'character': 34, 'line': 153}}, 'severity': 2}, {'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'source': 'pycodestyle', 'code': 'E901', 'range': {'start': {'character': 16, 'line': 160}, 'end': {'character': 34, 'line': 160}}, 'severity': 2}, {'message': 'invalid syntax', 'source': 'pyflakes', 'severity': 1, 'range': {'start': {'character': 32, 'line': 144}, 'end': {'character': 66, 'line': 144}}}]} 2018-02-18 00:07:33,190 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.create_event(EType.endElement, name=\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-18 00:07:33,192 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-18 00:07:33,693 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:07:33,816 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:07:33,817 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:33,817 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:33,817 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:33,817 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:33,818 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:33,818 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:33,818 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:33,818 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:33,818 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:07:34,030 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:34,030 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:34,030 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:34,031 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:34,031 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:34,031 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:34,031 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:34,031 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:34,032 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:07:34,039 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:07:34,039 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:07:52,675 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-18 00:07:53,177 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:07:53,223 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:53,224 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:07:53,303 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:53,303 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:53,303 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:53,303 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:53,303 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:53,304 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:53,304 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:53,304 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:53,304 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:07:53,307 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:07:53,307 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:07:58,503 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.ds.startElement(head.name, head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-18 00:07:58,507 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-18 00:07:59,008 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:07:59,124 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:07:59,124 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:59,124 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:59,125 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:59,125 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:59,125 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:59,125 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:59,126 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:59,126 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:59,126 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:07:59,303 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:59,303 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:07:59,303 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:07:59,303 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:59,304 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:59,304 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:07:59,304 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:07:59,304 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:07:59,304 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:07:59,311 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:07:59,312 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 255}, 'end': {'character': 82, 'line': 255}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 372}, 'end': {'character': 85, 'line': 372}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 380}, 'end': {'character': 85, 'line': 380}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 99, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 81, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 391}, 'end': {'character': 90, 'line': 391}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 412}, 'end': {'character': 85, 'line': 412}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 484}, 'end': {'character': 55, 'line': 484}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:09:07,570 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":27}}}' 2018-02-18 00:09:08,072 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:09:08,118 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:09:08,118 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:08,118 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:08,119 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:09:08,199 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:08,199 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:09:08,199 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:09:08,199 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:08,199 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:08,200 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:08,200 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:09:08,200 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:08,200 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:09:08,203 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 24, 'line': 246}, 'end': {'character': 42, 'line': 246}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 256}, 'end': {'character': 82, 'line': 256}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 373}, 'end': {'character': 85, 'line': 373}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 381}, 'end': {'character': 85, 'line': 381}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 85, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 99, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 81, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 392}, 'end': {'character': 90, 'line': 392}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 413}, 'end': {'character': 85, 'line': 413}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 485}, 'end': {'character': 55, 'line': 485}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:09:08,203 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E128 continuation line under-indented for visual indent', 'source': 'pycodestyle', 'code': 'E128', 'range': {'start': {'character': 24, 'line': 246}, 'end': {'character': 42, 'line': 246}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 256}, 'end': {'character': 82, 'line': 256}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 373}, 'end': {'character': 85, 'line': 373}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 381}, 'end': {'character': 85, 'line': 381}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 85, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 99, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 81, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 392}, 'end': {'character': 90, 'line': 392}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 413}, 'end': {'character': 85, 'line': 413}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 485}, 'end': {'character': 55, 'line': 485}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:09:12,650 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-18 00:09:12,652 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-18 00:09:13,156 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:09:13,207 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:09:13,208 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:13,208 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:09:13,208 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:09:13,208 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:13,208 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:13,208 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:13,209 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:09:13,209 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:13,209 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:09:13,299 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:13,299 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:09:13,299 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:09:13,299 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:13,299 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:13,300 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:13,300 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:09:13,300 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:13,300 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:09:13,304 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 256}, 'end': {'character': 82, 'line': 256}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 373}, 'end': {'character': 85, 'line': 373}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 381}, 'end': {'character': 85, 'line': 381}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 85, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 99, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 81, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 392}, 'end': {'character': 90, 'line': 392}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 413}, 'end': {'character': 85, 'line': 413}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 485}, 'end': {'character': 55, 'line': 485}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:09:13,304 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 182}, 'end': {'character': 19, 'line': 182}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 201}, 'end': {'character': 88, 'line': 201}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 204}, 'end': {'character': 82, 'line': 204}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 256}, 'end': {'character': 82, 'line': 256}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 373}, 'end': {'character': 85, 'line': 373}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 381}, 'end': {'character': 85, 'line': 381}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 85, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 99, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 81, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 392}, 'end': {'character': 90, 'line': 392}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 413}, 'end': {'character': 85, 'line': 413}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 485}, 'end': {'character': 55, 'line': 485}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:09:55,401 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":29}}}' 2018-02-18 00:09:55,406 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":29}}}' 2018-02-18 00:09:55,907 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:09:56,025 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 19, 'line': 201}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:09:56,026 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:56,026 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:09:56,027 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:09:56,027 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:56,027 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:56,027 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:56,028 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:09:56,028 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:56,028 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:09:56,205 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:56,205 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:09:56,205 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:09:56,206 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:56,206 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:56,206 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:09:56,206 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:09:56,206 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:09:56,207 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:09:56,214 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 19, 'line': 201}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 188}, 'end': {'character': 82, 'line': 188}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 193}, 'end': {'character': 88, 'line': 193}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 256}, 'end': {'character': 82, 'line': 256}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 373}, 'end': {'character': 85, 'line': 373}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 381}, 'end': {'character': 85, 'line': 381}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 85, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 99, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 81, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 392}, 'end': {'character': 90, 'line': 392}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 413}, 'end': {'character': 85, 'line': 413}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 485}, 'end': {'character': 55, 'line': 485}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]] [hook] 2018-02-18 00:09:56,214 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 81}, 'end': {'character': 19, 'line': 81}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 89}, 'end': {'character': 19, 'line': 89}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 99}, 'end': {'character': 19, 'line': 99}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 142}, 'end': {'character': 19, 'line': 142}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 146}, 'end': {'character': 19, 'line': 146}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 155}, 'end': {'character': 19, 'line': 155}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 163}, 'end': {'character': 19, 'line': 163}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 201}, 'end': {'character': 19, 'line': 201}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 231}, 'end': {'character': 19, 'line': 231}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 167}, 'end': {'character': 67, 'line': 167}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 188}, 'end': {'character': 82, 'line': 188}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 193}, 'end': {'character': 88, 'line': 193}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 196}, 'end': {'character': 82, 'line': 196}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 256}, 'end': {'character': 82, 'line': 256}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 373}, 'end': {'character': 85, 'line': 373}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 381}, 'end': {'character': 85, 'line': 381}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 384}, 'end': {'character': 85, 'line': 384}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 99, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 81, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 392}, 'end': {'character': 90, 'line': 392}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 413}, 'end': {'character': 85, 'line': 413}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 485}, 'end': {'character': 55, 'line': 485}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 168}, 'end': {'character': 60, 'line': 168}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 232}, 'end': {'character': 28, 'line': 232}}}]} 2018-02-18 00:10:58,250 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":30}}}' 2018-02-18 00:10:58,752 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:10:58,810 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:10:58,810 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:58,810 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:58,811 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:58,911 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:10:58,912 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:58,912 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:10:58,916 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:10:58,916 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:10:58,981 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":31}}}' 2018-02-18 00:10:58,985 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":31}}}' 2018-02-18 00:10:59,486 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:10:59,592 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:10:59,592 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:59,592 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:10:59,592 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:10:59,592 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:59,592 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:59,593 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:59,593 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:10:59,593 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:59,593 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:10:59,681 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:10:59,682 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:10:59,686 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:10:59,686 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:11:13,424 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":32}}}' 2018-02-18 00:11:13,926 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:11:14,036 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:11:14,036 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:14,037 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:11:14,037 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:11:14,037 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,037 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,037 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:14,038 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:11:14,038 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,038 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:11:14,195 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n self.refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-18 00:11:14,197 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:14,198 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:11:14,198 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:11:14,198 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-18 00:11:14,198 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,198 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,199 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:14,199 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:11:14,199 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,199 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:11:14,204 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:11:14,204 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:11:14,699 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:11:14,816 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:11:14,817 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:14,817 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:11:14,817 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:11:14,818 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,818 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,818 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:14,818 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:11:14,818 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:14,819 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:11:15,000 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:15,000 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:11:15,001 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:11:15,001 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:15,001 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:15,001 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:11:15,001 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:11:15,002 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:11:15,002 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:11:15,009 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:11:15,009 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 257}, 'end': {'character': 82, 'line': 257}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:12:21,781 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.endVerse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":34}}}' 2018-02-18 00:12:21,788 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":34}}}' 2018-02-18 00:12:22,292 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:12:22,405 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:12:22,405 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:12:22,406 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:12:22,406 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:12:22,406 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:12:22,406 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:12:22,406 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:12:22,407 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:12:22,407 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:12:22,407 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:12:22,578 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:12:22,578 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:12:22,579 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:12:22,579 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:12:22,579 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:12:22,579 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:12:22,580 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:12:22,580 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:12:22,580 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:12:22,587 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:12:22,587 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:13:30,500 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.end_verse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":35}}}' 2018-02-18 00:13:31,002 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:13:31,049 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:13:31,049 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:31,049 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:13:31,049 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:13:31,049 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,050 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,050 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:31,050 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:13:31,050 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,050 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:13:31,129 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:31,129 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:13:31,129 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:13:31,129 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,130 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,130 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:31,130 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:13:31,130 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,130 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:13:31,162 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:13:31,163 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:13:31,313 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.end_verse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n self.curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = self.curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":36}}}' 2018-02-18 00:13:31,315 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":36}}}' 2018-02-18 00:13:31,816 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:13:31,939 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:13:31,940 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:31,940 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:13:31,940 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:13:31,941 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,941 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,941 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:31,941 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:13:31,942 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:31,942 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:13:32,119 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:32,119 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:13:32,120 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:13:32,120 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:32,120 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:32,120 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:13:32,121 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:13:32,121 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:13:32,121 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:13:32,128 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:13:32,128 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:14:00,970 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': self.refBase})\\n\\n self.end_verse(self.refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-18 00:14:00,972 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-18 00:14:01,473 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:14:01,584 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:14:01,584 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:01,585 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:14:01,585 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:14:01,585 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:01,585 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:01,586 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:01,586 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:14:01,586 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:01,586 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:14:01,761 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:01,761 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:14:01,761 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:14:01,762 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:01,762 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:01,762 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:01,762 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:14:01,763 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:01,763 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:14:01,770 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:14:01,770 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:14:46,464 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n self.refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.endVerse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":38}}}' 2018-02-18 00:14:46,467 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":38}}}' 2018-02-18 00:14:46,971 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:14:47,087 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:14:47,088 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:47,088 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:14:47,088 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:14:47,088 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:47,089 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:47,089 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:47,089 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:14:47,089 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:47,089 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:14:47,268 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:47,268 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:14:47,269 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:14:47,269 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:47,269 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:47,269 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:14:47,270 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:14:47,270 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:14:47,270 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:14:47,276 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:14:47,277 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:15:00,620 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = self.refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(self.refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-18 00:15:01,122 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:15:01,169 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:15:01,169 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:01,169 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:15:01,169 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:15:01,169 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:01,169 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:01,170 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:01,170 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:15:01,170 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:01,170 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:15:01,249 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:01,250 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:15:01,254 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:15:01,254 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:15:23,703 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n self.refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': self.refID, \'osisID\': self.refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":40}}}' 2018-02-18 00:15:23,705 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":40}}}' 2018-02-18 00:15:24,210 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:15:24,324 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:15:24,325 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:24,325 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:15:24,325 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:15:24,326 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:24,326 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:24,326 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:24,326 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:15:24,326 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:24,327 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:15:24,500 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:24,500 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:15:24,501 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:15:24,501 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:24,501 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:24,501 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:15:24,502 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:15:24,502 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:15:24,502 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:15:24,509 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:15:24,510 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:16:17,289 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_even(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":41}}}' 2018-02-18 00:16:17,292 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":41}}}' 2018-02-18 00:16:17,797 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:16:17,915 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:16:17,915 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:16:17,916 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:16:17,916 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:16:17,916 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:16:17,916 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:16:17,916 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:16:17,917 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:16:17,917 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:16:17,917 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:16:18,090 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:16:18,091 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:16:18,091 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:16:18,091 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:16:18,091 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:16:18,092 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:16:18,092 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:16:18,092 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:16:18,092 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:16:18,101 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:16:18,101 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:17:05,013 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":42}}}' 2018-02-18 00:17:05,515 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:05,563 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:05,564 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:05,564 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:05,564 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:17:05,644 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:05,644 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:05,644 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:05,644 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:05,645 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:05,645 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:05,645 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:05,645 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:05,645 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:17:05,649 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:17:05,649 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:17:05,967 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_even(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-18 00:17:05,970 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-18 00:17:06,471 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:17:06,586 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:17:06,587 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:06,587 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:06,587 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:06,588 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:06,588 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:06,588 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:06,588 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:06,589 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:06,589 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:17:06,762 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:06,762 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:06,762 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:06,763 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:06,763 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:06,763 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:06,763 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:06,764 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:06,764 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:17:06,772 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:17:06,773 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:17:24,909 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":44}}}' 2018-02-18 00:17:25,410 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:17:25,457 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:17:25,457 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:25,457 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:25,457 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:25,457 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:25,457 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:25,458 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:25,458 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:25,458 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:25,458 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:17:25,540 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:25,540 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:25,540 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:25,540 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:25,540 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:25,541 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:25,541 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:25,541 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:25,541 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:17:25,545 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:17:25,545 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:17:25,678 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":45}}}' 2018-02-18 00:17:25,684 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":45}}}' 2018-02-18 00:17:26,186 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:17:26,301 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:17:26,302 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:26,302 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:26,302 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:26,302 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:26,303 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:26,303 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:26,303 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:26,303 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:26,304 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:17:26,478 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:26,478 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:26,479 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:26,479 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:26,479 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:26,479 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:26,479 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:26,480 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:26,480 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:17:26,488 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:17:26,488 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:17:42,101 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n self.curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + self.curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if self.curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-18 00:17:42,103 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-18 00:17:42,604 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:17:42,718 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:17:42,719 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:42,719 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:42,719 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:42,719 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:42,719 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:42,720 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:42,720 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:42,720 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:42,720 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:17:42,908 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:42,908 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:17:42,909 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:17:42,909 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:42,909 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:42,909 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:17:42,910 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:17:42,910 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:17:42,910 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:17:42,964 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:17:42,964 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:18:41,264 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-18 00:18:41,266 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-18 00:18:41,767 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:18:41,889 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:18:41,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:18:41,890 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:18:41,890 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:18:41,890 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:18:41,891 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:18:41,891 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:18:41,891 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:18:41,891 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:18:41,892 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:18:42,070 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:18:42,070 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:18:42,071 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:18:42,071 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:18:42,071 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:18:42,071 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:18:42,071 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:18:42,072 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:18:42,072 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:18:42,078 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:18:42,079 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 374}, 'end': {'character': 85, 'line': 374}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 382}, 'end': {'character': 85, 'line': 382}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 385}, 'end': {'character': 85, 'line': 385}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 99, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 388}, 'end': {'character': 81, 'line': 388}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 393}, 'end': {'character': 90, 'line': 393}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 414}, 'end': {'character': 85, 'line': 414}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 486}, 'end': {'character': 55, 'line': 486}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:19:19,675 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":48}}}' 2018-02-18 00:19:20,176 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:19:20,224 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:20,225 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:20,307 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:19:20,311 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:19:20,311 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:19:22,725 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":49}}}' 2018-02-18 00:19:22,731 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":49}}}' 2018-02-18 00:19:23,232 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:19:23,283 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:23,284 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:19:23,420 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:23,421 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:23,421 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:23,421 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:23,421 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:23,422 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:23,422 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:23,422 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:23,422 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:19:23,429 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:19:23,429 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:19:53,552 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-18 00:19:53,553 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-18 00:19:54,054 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:19:54,169 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:19:54,170 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:54,170 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:54,170 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:54,170 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:54,170 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:54,171 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:54,171 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:54,171 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:54,171 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:19:54,353 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:54,353 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:54,353 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:54,354 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:54,354 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:54,354 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:54,354 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:54,355 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:54,355 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:19:54,362 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:19:54,362 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:19:55,381 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-18 00:19:55,382 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-18 00:19:55,382 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-18 00:19:55,883 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-18 00:19:56,012 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}] 2018-02-18 00:19:56,013 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:56,013 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:56,013 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:56,014 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:56,014 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:56,014 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:56,014 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:56,015 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:56,015 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:19:56,264 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:56,264 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:19:56,264 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:19:56,264 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:56,265 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:56,265 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:19:56,265 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:19:56,265 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:19:56,265 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:19:56,274 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}], [{'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}], [{'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]] [hook] 2018-02-18 00:19:56,275 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 19, 'line': 76}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 82}, 'end': {'character': 19, 'line': 82}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 90}, 'end': {'character': 19, 'line': 90}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 94}, 'end': {'character': 19, 'line': 94}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 19, 'line': 100}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 143}, 'end': {'character': 19, 'line': 143}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 147}, 'end': {'character': 19, 'line': 147}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 156}, 'end': {'character': 19, 'line': 156}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 164}, 'end': {'character': 19, 'line': 164}}, 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 172}, 'end': {'character': 19, 'line': 172}}, 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 202}, 'end': {'character': 19, 'line': 202}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'severity': 2, 'code': 'D102'}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 76}, 'end': {'character': 36, 'line': 76}}, 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'source': 'pycodestyle', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 168}, 'end': {'character': 67, 'line': 168}}, 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'source': 'pycodestyle', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 36, 'line': 171}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 189}, 'end': {'character': 82, 'line': 189}}, 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 194}, 'end': {'character': 88, 'line': 194}}, 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 197}, 'end': {'character': 82, 'line': 197}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 375}, 'end': {'character': 85, 'line': 375}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 383}, 'end': {'character': 85, 'line': 383}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 386}, 'end': {'character': 85, 'line': 386}}, 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 387}, 'end': {'character': 99, 'line': 387}}, 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 389}, 'end': {'character': 81, 'line': 389}}, 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 394}, 'end': {'character': 90, 'line': 394}}, 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'source': 'pycodestyle', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 415}, 'end': {'character': 85, 'line': 415}}, 'severity': 2}, {'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 487}, 'end': {'character': 55, 'line': 487}}, 'severity': 2}, {'message': "undefined name 'Enum'", 'source': 'pyflakes', 'severity': 2, 'range': {'start': {'character': 8, 'line': 169}, 'end': {'character': 60, 'line': 169}}}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'source': 'mccabe', 'severity': 2, 'range': {'start': {'character': 4, 'line': 233}, 'end': {'character': 28, 'line': 233}}}]} 2018-02-18 00:22:34,160 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-18 00:22:34,161 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-18 00:22:34,162 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off', 'initializationOptions': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'capabilities': {}} 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-18 00:22:34,375 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-18 00:22:34,376 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-18 00:22:34,376 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-18 00:22:34,376 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-18 00:22:34,376 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-18 00:22:34,376 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-18 00:22:34,376 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-18 00:22:34,376 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None config: workspace: 2018-02-18 00:22:34,376 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-18 00:22:34,376 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None config: workspace: 2018-02-18 00:22:34,377 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-18 00:22:34,377 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None config: workspace: 2018-02-18 00:22:34,377 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-18 00:22:34,377 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None config: workspace: 2018-02-18 00:22:34,377 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-18 00:22:34,377 UTC - INFO - pyls.python_ls - Server capabilities: {'referencesProvider': True, 'textDocumentSync': 2, 'documentFormattingProvider': True, 'renameProvider': True, 'definitionProvider': True, 'experimental': {}, 'documentRangeFormattingProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'codeActionProvider': True, 'executeCommandProvider': {'commands': []}, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'codeLensProvider': {'resolveProvider': False}, 'hoverProvider': True, 'documentSymbolProvider': True} 2018-02-18 00:22:34,400 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-18 00:22:34,402 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:34,402 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-18 00:22:34,902 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:34,903 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:34,903 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:34,903 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:34,903 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:34,904 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:34,904 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:34,904 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:34,904 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:22:35,077 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 202}, 'start': {'character': 0, 'line': 202}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 224}, 'start': {'character': 0, 'line': 224}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 232}, 'start': {'character': 0, 'line': 232}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 458}, 'start': {'character': 0, 'line': 458}}, 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:22:35,078 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:35,078 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:35,078 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:35,078 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:35,079 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:35,079 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:35,079 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:35,079 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:35,079 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:22:35,084 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 189}, 'start': {'character': 79, 'line': 189}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 194}, 'start': {'character': 79, 'line': 194}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 197}, 'start': {'character': 79, 'line': 197}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'severity': 2}], [{'message': "undefined name 'Enum'", 'range': {'end': {'character': 60, 'line': 169}, 'start': {'character': 8, 'line': 169}}, 'source': 'pyflakes', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 202}, 'start': {'character': 0, 'line': 202}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 224}, 'start': {'character': 0, 'line': 224}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 232}, 'start': {'character': 0, 'line': 232}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 458}, 'start': {'character': 0, 'line': 458}}, 'source': 'pydocstyle', 'severity': 2}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 233}, 'start': {'character': 4, 'line': 233}}, 'source': 'mccabe', 'severity': 2}]] [hook] 2018-02-18 00:22:35,084 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 168}, 'start': {'character': 0, 'line': 168}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 189}, 'start': {'character': 79, 'line': 189}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 194}, 'start': {'character': 79, 'line': 194}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 197}, 'start': {'character': 79, 'line': 197}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 375}, 'start': {'character': 79, 'line': 375}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 383}, 'start': {'character': 79, 'line': 383}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 386}, 'start': {'character': 79, 'line': 386}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 389}, 'start': {'character': 79, 'line': 389}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 394}, 'start': {'character': 79, 'line': 394}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 415}, 'start': {'character': 79, 'line': 415}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 487}, 'start': {'character': 55, 'line': 487}}, 'source': 'pycodestyle', 'severity': 2}, {'message': "undefined name 'Enum'", 'range': {'end': {'character': 60, 'line': 169}, 'start': {'character': 8, 'line': 169}}, 'source': 'pyflakes', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 76}, 'start': {'character': 0, 'line': 76}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 82}, 'start': {'character': 0, 'line': 82}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 90}, 'start': {'character': 0, 'line': 90}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 94}, 'start': {'character': 0, 'line': 94}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 100}, 'start': {'character': 0, 'line': 100}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 143}, 'start': {'character': 0, 'line': 143}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 147}, 'start': {'character': 0, 'line': 147}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 156}, 'start': {'character': 0, 'line': 156}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 164}, 'start': {'character': 0, 'line': 164}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 171}, 'start': {'character': 0, 'line': 171}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 202}, 'start': {'character': 0, 'line': 202}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 224}, 'start': {'character': 0, 'line': 224}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 232}, 'start': {'character': 0, 'line': 232}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 458}, 'start': {'character': 0, 'line': 458}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 233}, 'start': {'character': 4, 'line': 233}}, 'source': 'mccabe', 'severity': 2}]} 2018-02-18 00:22:43,997 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport module\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-18 00:22:44,499 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:44,499 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:44,499 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:44,499 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:44,499 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:44,499 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:44,500 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:44,500 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:44,500 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:44,500 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:22:44,654 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:22:44,654 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:44,654 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:44,654 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:44,654 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:44,654 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:44,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:44,655 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:44,655 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:44,655 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:22:44,659 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}], [{'message': "'module' imported but unused", 'range': {'end': {'character': 14, 'line': 3}, 'start': {'character': 0, 'line': 3}}, 'source': 'pyflakes', 'severity': 2}, {'message': "undefined name 'Enum'", 'range': {'end': {'character': 60, 'line': 170}, 'start': {'character': 8, 'line': 170}}, 'source': 'pyflakes', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]] [hook] 2018-02-18 00:22:44,659 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}, {'message': "'module' imported but unused", 'range': {'end': {'character': 14, 'line': 3}, 'start': {'character': 0, 'line': 3}}, 'source': 'pyflakes', 'severity': 2}, {'message': "undefined name 'Enum'", 'range': {'end': {'character': 60, 'line': 170}, 'start': {'character': 8, 'line': 170}}, 'source': 'pyflakes', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]} 2018-02-18 00:22:45,915 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-18 00:22:46,417 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:46,417 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:46,417 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:46,417 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:46,418 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:46,418 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:46,418 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:46,418 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:46,418 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:46,418 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:22:46,548 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:22:46,548 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:46,548 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:46,548 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:46,548 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:46,548 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:46,549 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:46,549 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:46,549 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:46,549 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:22:46,553 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}], [{'message': "'enum' imported but unused", 'range': {'end': {'character': 12, 'line': 3}, 'start': {'character': 0, 'line': 3}}, 'source': 'pyflakes', 'severity': 2}, {'message': "undefined name 'Enum'", 'range': {'end': {'character': 60, 'line': 170}, 'start': {'character': 8, 'line': 170}}, 'source': 'pyflakes', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]] [hook] 2018-02-18 00:22:46,553 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}, {'message': "'enum' imported but unused", 'range': {'end': {'character': 12, 'line': 3}, 'start': {'character': 0, 'line': 3}}, 'source': 'pyflakes', 'severity': 2}, {'message': "undefined name 'Enum'", 'range': {'end': {'character': 60, 'line': 170}, 'start': {'character': 8, 'line': 170}}, 'source': 'pyflakes', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]} 2018-02-18 00:22:50,692 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-18 00:22:51,193 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:51,194 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:51,194 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:51,194 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:51,194 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:51,194 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:51,194 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:51,195 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:51,195 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:51,195 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:22:51,321 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:51,322 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:22:51,327 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}], [], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]] [hook] 2018-02-18 00:22:51,327 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]} 2018-02-18 00:22:51,574 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-18 00:22:51,576 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-18 00:22:52,077 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:52,078 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:52,078 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:52,078 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:52,078 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:52,078 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:52,079 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:52,079 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:52,079 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:52,079 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:22:52,247 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:22:52,247 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:52,247 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:52,247 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:52,247 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:52,248 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:52,248 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:52,248 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:52,248 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:52,248 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:22:52,253 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}], [], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]] [hook] 2018-02-18 00:22:52,253 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]} 2018-02-18 00:22:56,150 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-18 00:22:56,152 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-18 00:22:56,653 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: workspace: 2018-02-18 00:22:56,653 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:56,654 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:56,654 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:56,654 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:56,654 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:56,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:56,655 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:56,655 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:56,655 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:22:56,969 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:22:56,970 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:56,970 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:22:56,970 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:22:56,970 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:56,970 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:56,971 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:22:56,971 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:22:56,971 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-18 00:22:56,971 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:22:56,980 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}], [], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}], [{'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]] [hook] 2018-02-18 00:22:56,980 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E305 expected 2 blank lines after class or function definition, found 1', 'code': 'E305', 'range': {'end': {'character': 67, 'line': 169}, 'start': {'character': 0, 'line': 169}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'end': {'character': 36, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 190}, 'start': {'character': 79, 'line': 190}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (87 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 88, 'line': 195}, 'start': {'character': 79, 'line': 195}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (81 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 82, 'line': 198}, 'start': {'character': 79, 'line': 198}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 376}, 'start': {'character': 79, 'line': 376}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 384}, 'start': {'character': 79, 'line': 384}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 387}, 'start': {'character': 79, 'line': 387}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (98 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 99, 'line': 388}, 'start': {'character': 79, 'line': 388}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 390}, 'start': {'character': 79, 'line': 390}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 395}, 'start': {'character': 79, 'line': 395}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 85, 'line': 416}, 'start': {'character': 79, 'line': 416}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 55, 'line': 488}, 'start': {'character': 55, 'line': 488}}, 'source': 'pycodestyle', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'end': {'character': 19, 'line': 172}, 'start': {'character': 0, 'line': 172}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 210}, 'start': {'character': 0, 'line': 210}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 225}, 'start': {'character': 0, 'line': 225}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 233}, 'start': {'character': 0, 'line': 233}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'end': {'character': 19, 'line': 459}, 'start': {'character': 0, 'line': 459}}, 'source': 'pydocstyle', 'severity': 2}, {'message': 'Cyclomatic complexity too high: 22 (threshold 15)', 'range': {'end': {'character': 28, 'line': 234}, 'start': {'character': 4, 'line': 234}}, 'source': 'mccabe', 'severity': 2}]} 2018-02-18 00:24:02,034 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-18 00:24:02,035 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-18 00:24:02,036 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'initializationOptions': {}, 'capabilities': {}, 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off'} 2018-02-18 00:24:02,327 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-18 00:24:02,327 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-18 00:24:02,327 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-18 00:24:02,327 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-18 00:24:02,328 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-18 00:24:02,328 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-18 00:24:02,328 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-18 00:24:02,328 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-18 00:24:02,328 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-18 00:24:02,328 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-18 00:24:02,329 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-18 00:24:02,329 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-18 00:24:02,329 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-18 00:24:02,329 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-18 00:24:02,329 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-18 00:24:02,330 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] config: workspace: document: None 2018-02-18 00:24:02,330 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-18 00:24:02,330 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] config: workspace: document: None 2018-02-18 00:24:02,330 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-18 00:24:02,330 UTC - DEBUG - pyls.config.config - pyls_commands [hook] config: workspace: document: None 2018-02-18 00:24:02,331 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-18 00:24:02,331 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] config: workspace: document: None 2018-02-18 00:24:02,331 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-18 00:24:02,331 UTC - INFO - pyls.python_ls - Server capabilities: {'documentFormattingProvider': True, 'textDocumentSync': 2, 'definitionProvider': True, 'experimental': {}, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'hoverProvider': True, 'codeActionProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentSymbolProvider': True, 'documentRangeFormattingProvider': True, 'referencesProvider': True, 'executeCommandProvider': {'commands': []}, 'codeLensProvider': {'resolveProvider': False}, 'renameProvider': True} 2018-02-18 00:24:02,356 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def getRefID(self):\\n refKniha = \'\'\\n if self.lastChapter != 0:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n return refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.collectedHeader.append(\\n Collected_head(\'div\',\\n {\'type\': \'book\', \'osisID\': self.refKniha,\\n \'canonical\': \'true\'}))\\n\\n elif name == \'titulek\':\\n # pick the collected information and generate everything\\n # TODO n\xc4\x9bkde se mus\xc3\xadme vyrovnat s attributem subType\\n # x-preverse\\n for head in self.collectedHeader:\\n self.create_event(EType.startElement, name=head.name,\\n attrs=head.attrs)\\n\\n elif name == \'kap\':\\n curChapter = attrs[\'n\']\\n refID = self.refKniha + \'.\' + curChapter\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if curChapter != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.lastChapter = curChapter\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': refID, \'osisID\': refID})\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n refID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': refID, \'osisID\': refID})\\n # FIXME we cannot do it, we don\'t have in-advance pointers\\n self.collect_title(type=\'main\')\\n self.lastVerse = curVerse\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# x-preverse\\n# \\n# \\n# \\n# \\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name == \'odkaz\':\\n refID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'study\',\\n \'osisRef\': refID,\\n \'osisID\': refID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# crossReference\\n# \\n# \\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# italic\\n# \\n# \\n# \\n# \\n# \\n# added\\n# \\n# \\n# \\n# \\n# \\n#\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n\\n# \\n# \\n# \\n\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# (\\n# \\n# \\n# \\n# )\\n# \\n# \\n# \\n# x-index\\n# inline\\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n# \\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = self.collected_note[:]\\n self.current_note = None\\n self.collected_note = []\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-18 00:24:02,358 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] config: workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-18 00:24:02,358 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-18 00:24:02,859 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-18 00:24:02,859 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:24:02,860 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:24:02,860 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:24:02,860 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:24:02,860 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:24:02,861 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:24:02,861 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:24:02,861 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:24:02,988 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 459, 'character': 0}, 'end': {'line': 459, 'character': 19}}, 'code': 'D102'}] 2018-02-18 00:24:02,989 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:24:02,989 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:24:02,989 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:24:02,989 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:24:02,989 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:24:02,990 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:24:02,990 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:24:02,990 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:24:02,990 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:24:03,078 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'source': 'mccabe', 'range': {'start': {'line': 234, 'character': 4}, 'end': {'line': 234, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}], [{'message': 'D100: Missing docstring in public module', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 459, 'character': 0}, 'end': {'line': 459, 'character': 19}}, 'code': 'D102'}], [{'code': 'E302', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 36}}, 'message': 'E302 expected 2 blank lines, found 1'}, {'code': 'E305', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 169, 'character': 0}, 'end': {'line': 169, 'character': 67}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'code': 'E302', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'message': 'E302 expected 2 blank lines, found 1'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'message': 'E501 line too long (81 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'message': 'E501 line too long (87 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'message': 'E501 line too long (81 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 99}}, 'message': 'E501 line too long (98 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 81}}, 'message': 'E501 line too long (80 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 395, 'character': 79}, 'end': {'line': 395, 'character': 90}}, 'message': 'E501 line too long (89 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 416, 'character': 79}, 'end': {'line': 416, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'W292', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 488, 'character': 55}, 'end': {'line': 488, 'character': 55}}, 'message': 'W292 no newline at end of file'}], []] [hook] 2018-02-18 00:24:03,079 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'severity': 2, 'source': 'mccabe', 'range': {'start': {'line': 234, 'character': 4}, 'end': {'line': 234, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 22 (threshold 15)'}, {'message': 'D100: Missing docstring in public module', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 225, 'character': 0}, 'end': {'line': 225, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'severity': 2, 'source': 'pydocstyle', 'range': {'start': {'line': 459, 'character': 0}, 'end': {'line': 459, 'character': 19}}, 'code': 'D102'}, {'code': 'E302', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 36}}, 'message': 'E302 expected 2 blank lines, found 1'}, {'code': 'E305', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 169, 'character': 0}, 'end': {'line': 169, 'character': 67}}, 'message': 'E305 expected 2 blank lines after class or function definition, found 1'}, {'code': 'E302', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'message': 'E302 expected 2 blank lines, found 1'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 190, 'character': 79}, 'end': {'line': 190, 'character': 82}}, 'message': 'E501 line too long (81 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 195, 'character': 79}, 'end': {'line': 195, 'character': 88}}, 'message': 'E501 line too long (87 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 198, 'character': 79}, 'end': {'line': 198, 'character': 82}}, 'message': 'E501 line too long (81 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 376, 'character': 79}, 'end': {'line': 376, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 384, 'character': 79}, 'end': {'line': 384, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 387, 'character': 79}, 'end': {'line': 387, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 388, 'character': 79}, 'end': {'line': 388, 'character': 99}}, 'message': 'E501 line too long (98 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 390, 'character': 79}, 'end': {'line': 390, 'character': 81}}, 'message': 'E501 line too long (80 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 395, 'character': 79}, 'end': {'line': 395, 'character': 90}}, 'message': 'E501 line too long (89 > 79 characters)'}, {'code': 'E501', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 416, 'character': 79}, 'end': {'line': 416, 'character': 85}}, 'message': 'E501 line too long (84 > 79 characters)'}, {'code': 'W292', 'severity': 2, 'source': 'pycodestyle', 'range': {'start': {'line': 488, 'character': 55}, 'end': {'line': 488, 'character': 55}}, 'message': 'W292 no newline at end of file'}]} 2018-02-18 00:25:33,447 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-18 00:25:33,448 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-18 00:25:33,448 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'initializationOptions': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off', 'capabilities': {}} 2018-02-18 00:25:33,723 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-18 00:25:33,723 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-18 00:25:33,723 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-18 00:25:33,723 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-18 00:25:33,723 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-18 00:25:33,723 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-18 00:25:33,724 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-18 00:25:33,724 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-18 00:25:33,724 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-18 00:25:33,724 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] config: document: None workspace: 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] config: document: None workspace: 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - pyls_commands [hook] config: document: None workspace: 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] config: document: None workspace: 2018-02-18 00:25:33,725 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-18 00:25:33,725 UTC - INFO - pyls.python_ls - Server capabilities: {'definitionProvider': True, 'hoverProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'executeCommandProvider': {'commands': []}, 'codeLensProvider': {'resolveProvider': False}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'textDocumentSync': 2, 'documentRangeFormattingProvider': True, 'referencesProvider': True, 'documentFormattingProvider': True, 'renameProvider': True, 'experimental': {}, 'codeActionProvider': True, 'documentSymbolProvider': True} 2018-02-18 00:25:33,729 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/preprocess.py","version":1,"languageId":"python","text":"#!/usr/bin/python\\n# -*- coding: utf-8 -*-\\nimport glob, re, os\\n\\n\\nTranslDict = {\\n \\"11_Gn.xml\\": \\"Gen\\",\\n \\"12_Ex.xml\\": \\"Exod\\",\\n \\"13_Lv.xml\\": \\"Lev\\",\\n \\"14_Nu.xml\\": \\"Num\\",\\n \\"15_Dt.xml\\": \\"Deut\\",\\n \\"16_Joz.xml\\": \\"Josh\\",\\n \\"17_Sd.xml\\": \\"Judg\\",\\n \\"18_Rt.xml\\": \\"Ruth\\",\\n \\"19_1S.xml\\": \\"1Sam\\",\\n \\"20_2S.xml\\": \\"2Sam\\",\\n \\"21_1Kr.xml\\": \\"1Kgs\\",\\n \\"22_2Kr.xml\\": \\"2Kgs\\",\\n \\"23_1Pa.xml\\": \\"1Chr\\",\\n \\"24_2Pa.xml\\": \\"2Chr\\",\\n \\"25_Ezd.xml\\": \\"Ezra\\",\\n \\"26_Neh.xml\\": \\"Neh\\",\\n \\"27_Est.xml\\": \\"Esth\\",\\n \\"28_Jb.xml\\": \\"Job\\",\\n \\"29_Psa.xml\\": \\"Ps\\",\\n \\"30_Pro.xml\\": \\"Prov\\",\\n \\"31_Kaz.xml\\": \\"Eccl\\",\\n \\"32_Pis.xml\\": \\"Song\\",\\n \\"33_Iz.xml\\": \\"Isa\\",\\n \\"34_Jr.xml\\": \\"Jer\\",\\n \\"35_Pl.xml\\": \\"Lam\\",\\n \\"36_Ez.xml\\": \\"Ezek\\",\\n \\"37_Da.xml\\": \\"Dan\\",\\n \\"38_Oz.xml\\": \\"Hos\\",\\n \\"39_Jl.xml\\": \\"Joel\\",\\n \\"40_Am.xml\\": \\"Amos\\",\\n \\"41_Abd.xml\\": \\"Obad\\",\\n \\"42_Jon.xml\\": \\"Jonah\\",\\n \\"43_Mi.xml\\": \\"Mic\\",\\n \\"44_Na.xml\\": \\"Nah\\",\\n \\"45_Abk.xml\\": \\"Hab\\",\\n \\"46_Sf.xml\\": \\"Zeph\\",\\n \\"47_Ag.xml\\": \\"Hag\\",\\n \\"48_Za.xml\\": \\"Zech\\",\\n \\"49_Mal.xml\\": \\"Mal\\",\\n \\"61_Mt.xml\\": \\"Matt\\",\\n \\"62_Mk.xml\\": \\"Mark\\",\\n \\"63_Lk.xml\\": \\"Luke\\",\\n \\"64_Jn.xml\\": \\"John\\",\\n \\"65_Sk.xml\\": \\"Acts\\",\\n \\"66_Ro.xml\\": \\"Rom\\",\\n \\"67_1K.xml\\": \\"1Cor\\",\\n \\"68_2K.xml\\": \\"2Cor\\",\\n \\"69_Ga.xml\\": \\"Gal\\",\\n \\"70_Ef.xml\\": \\"Eph\\",\\n \\"71_Fp.xml\\": \\"Phil\\",\\n \\"72_Ko.xml\\": \\"Col\\",\\n \\"73_1Te.xml\\": \\"1Thess\\",\\n \\"74_2Te.xml\\": \\"2Thess\\",\\n \\"75_1Tm.xml\\": \\"1Tim\\",\\n \\"76_2Tm.xml\\": \\"2Tim\\",\\n \\"77_Tt.xml\\": \\"Titus\\",\\n \\"78_Fm.xml\\": \\"Phlm\\",\\n \\"79_He.xml\\": \\"Heb\\",\\n \\"80_Jk.xml\\": \\"Jas\\",\\n \\"81_1Pt.xml\\": \\"1Pet\\",\\n \\"82_2Pt.xml\\": \\"2Pet\\",\\n \\"83_1J.xml\\": \\"1John\\",\\n \\"84_2J.xml\\": \\"2John\\",\\n \\"85_3J.xml\\": \\"3John\\",\\n \\"86_Ju.xml\\": \\"Jude\\",\\n \\"87_Zj.xml\\": \\"Rev\\"}\\n\\n# FIXME onvert to z. str. 123 z podklady-OSIS\\n# /OSIS2_1UserManual_06March2006_-_with_O\'Donnell_edits.PDF,\\n# appendix C \\"Normative Abbreviations for canonical and deutero-canonical books\\n\\nfor fileName in glob.glob(\\"[0-9]*.xml\\"):\\n bookName = TranslDict[fileName]\\n outF = open(\\"%s.tmp\\" % fileName, \\"w\\")\\n for line in file(fileName):\\n line = line.replace(\\"\\", \'\' % bookName)\\n line = line.replace(\\"~\\", r\\" \\")\\n outF.write(line)\\n outF.close()\\n os.unlink(fileName)\\n os.rename(outF.name, fileName)"}}}' 2018-02-18 00:25:33,730 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/preprocess.py workspace: 2018-02-18 00:25:33,730 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-18 00:25:34,231 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/preprocess.py workspace: 2018-02-18 00:25:34,248 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'range': {'end': {'character': 18, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'source': 'pydocstyle', 'severity': 2}] 2018-02-18 00:25:34,248 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:25:34,248 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:25:34,249 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:25:34,249 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:25:34,249 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:25:34,249 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:25:34,249 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:25:34,249 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 00:25:34,251 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 00:25:34,252 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 00:25:34,263 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'range': {'end': {'character': 18, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'source': 'pydocstyle', 'severity': 2}], [], [{'range': {'end': {'character': 20, 'line': 2}, 'start': {'character': 0, 'line': 2}}, 'message': "'re' imported but unused", 'source': 'pyflakes', 'severity': 2}, {'range': {'end': {'character': 32, 'line': 80}, 'start': {'character': 16, 'line': 80}}, 'message': "undefined name 'file'", 'source': 'pyflakes', 'severity': 2}], [{'range': {'end': {'character': 20, 'line': 2}, 'start': {'character': 11, 'line': 2}}, 'code': 'E401', 'message': 'E401 multiple imports on one line', 'source': 'pycodestyle', 'severity': 2}, {'range': {'end': {'character': 34, 'line': 86}, 'start': {'character': 34, 'line': 86}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'severity': 2}]] [hook] 2018-02-18 00:25:34,263 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/preprocess.py', 'diagnostics': [{'range': {'end': {'character': 18, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'source': 'pydocstyle', 'severity': 2}, {'range': {'end': {'character': 20, 'line': 2}, 'start': {'character': 0, 'line': 2}}, 'message': "'re' imported but unused", 'source': 'pyflakes', 'severity': 2}, {'range': {'end': {'character': 32, 'line': 80}, 'start': {'character': 16, 'line': 80}}, 'message': "undefined name 'file'", 'source': 'pyflakes', 'severity': 2}, {'range': {'end': {'character': 20, 'line': 2}, 'start': {'character': 11, 'line': 2}}, 'code': 'E401', 'message': 'E401 multiple imports on one line', 'source': 'pycodestyle', 'severity': 2}, {'range': {'end': {'character': 34, 'line': 86}, 'start': {'character': 34, 'line': 86}}, 'code': 'W292', 'message': 'W292 no newline at end of file', 'source': 'pycodestyle', 'severity': 2}]} 2018-02-18 16:07:16,986 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-18 16:07:16,986 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/.local/bin","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/.local/bin","trace":"off"}}' 2018-02-18 16:07:16,987 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej/.local/bin', 'trace': 'off', 'initializationOptions': {}, 'rootUri': 'file:///home/matej/.local/bin', 'capabilities': {}} 2018-02-18 16:07:17,174 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-18 16:07:17,174 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-18 16:07:17,174 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-18 16:07:17,175 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-18 16:07:17,175 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-18 16:07:17,175 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-18 16:07:17,175 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-18 16:07:17,175 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-18 16:07:17,175 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-18 16:07:17,176 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-18 16:07:17,176 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-18 16:07:17,176 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-18 16:07:17,176 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-18 16:07:17,176 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-18 16:07:17,176 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-18 16:07:17,177 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None config: workspace: 2018-02-18 16:07:17,177 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-18 16:07:17,177 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None config: workspace: 2018-02-18 16:07:17,177 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-18 16:07:17,177 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None config: workspace: 2018-02-18 16:07:17,177 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-18 16:07:17,178 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None config: workspace: 2018-02-18 16:07:17,178 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-18 16:07:17,178 UTC - INFO - pyls.python_ls - Server capabilities: {'documentFormattingProvider': True, 'referencesProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentRangeFormattingProvider': True, 'documentSymbolProvider': True, 'definitionProvider': True, 'renameProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'executeCommandProvider': {'commands': []}, 'experimental': {}, 'textDocumentSync': 2, 'hoverProvider': True, 'codeActionProvider': True} 2018-02-18 16:07:17,183 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/.local/bin/charm","version":1,"languageId":"python","text":"#!/usr/bin/env python\\n# -*- coding: utf-8 -*-\\n\\nimport socket\\nimport struct\\nimport sys\\nimport os\\nimport time\\n\\n# see com.intellij.idea.SocketLock for the server side of this interface\\n\\nRUN_PATH = u\'/usr/share/java/pycharm-community/bin/pycharm.sh\'\\nCONFIG_PATH = u\'/home/matej/.PyCharmCE2017.3/config\'\\nSYSTEM_PATH = u\'/home/matej/.PyCharmCE2017.3/system\'\\n\\n\\ndef print_usage(cmd):\\n print((\'Usage:\\\\n\' +\\n \' {0} -h | -? | --help\\\\n\' +\\n \' {0} [project_dir]\\\\n\' +\\n \' {0} [-l|--line line] [project_dir|--temp-project] file[:line]\\\\n\' +\\n \' {0} diff \\\\n\' +\\n \' {0} merge [base] \').format(cmd))\\n\\n\\ndef process_args(argv):\\n args = []\\n\\n skip_next = False\\n for i, arg in enumerate(argv[1:]):\\n if arg == \'-h\' or arg == \'-?\' or arg == \'--help\':\\n print_usage(argv[0])\\n exit(0)\\n elif i == 0 and (arg == \'diff\' or arg == \'merge\' or arg == \'--temp-project\'):\\n args.append(arg)\\n elif arg == \'-l\' or arg == \'--line\':\\n args.append(arg)\\n skip_next = True\\n elif skip_next:\\n args.append(arg)\\n skip_next = False\\n else:\\n path = arg\\n if \':\' in arg:\\n file_path, line_number = arg.rsplit(\':\', 1)\\n if line_number.isdigit():\\n args.append(\'-l\')\\n args.append(line_number)\\n path = file_path\\n args.append(os.path.abspath(path))\\n\\n return args\\n\\n\\ndef try_activate_instance(args):\\n port_path = os.path.join(CONFIG_PATH, \'port\')\\n token_path = os.path.join(SYSTEM_PATH, \'token\')\\n if not (os.path.exists(port_path) and os.path.exists(token_path)):\\n return False\\n\\n with open(port_path) as pf:\\n port = int(pf.read())\\n with open(token_path) as tf:\\n token = tf.read()\\n\\n s = socket.socket()\\n s.settimeout(0.3)\\n try:\\n s.connect((\'127.0.0.1\', port))\\n except (socket.error, IOError):\\n return False\\n\\n found = False\\n while True:\\n try:\\n path_len = struct.unpack(\'>h\', s.recv(2))[0]\\n path = s.recv(path_len).decode(\'utf-8\')\\n if os.path.abspath(path) == os.path.abspath(CONFIG_PATH):\\n found = True\\n break\\n except (socket.error, IOError):\\n return False\\n\\n if found:\\n cmd = \'activate \' + token + \'\\\\0\' + os.getcwd() + \'\\\\0\' + \'\\\\0\'.join(args)\\n if sys.version_info.major >= 3: cmd = cmd.encode(\'utf-8\')\\n encoded = struct.pack(\'>h\', len(cmd)) + cmd\\n s.send(encoded)\\n time.sleep(0.5) # don\'t close the socket immediately\\n return True\\n\\n return False\\n\\n\\ndef start_new_instance(args):\\n if sys.platform == \'darwin\':\\n if len(args) > 0:\\n args.insert(0, \'--args\')\\n os.execvp(\'open\', [\'-a\', RUN_PATH] + args)\\n else:\\n bin_file = os.path.split(RUN_PATH)[1]\\n os.execv(RUN_PATH, [bin_file] + args)\\n\\n\\nide_args = process_args(sys.argv)\\nif not try_activate_instance(ide_args):\\n start_new_instance(ide_args)"}}}' 2018-02-18 16:07:17,184 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/.local/bin/charm config: workspace: 2018-02-18 16:07:17,185 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-18 16:07:17,685 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/.local/bin/charm config: workspace: 2018-02-18 16:07:17,686 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 16:07:17,686 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 16:07:17,686 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 16:07:17,686 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 16:07:17,687 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 16:07:17,687 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 16:07:17,687 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 16:07:17,688 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-18 16:07:17,728 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 16:07:17,729 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-18 16:07:17,729 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-18 16:07:17,729 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 16:07:17,729 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 16:07:17,730 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-18 16:07:17,730 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-18 16:07:17,730 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-18 16:07:17,730 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-18 16:07:17,738 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-18 16:07:17,738 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'range': {'start': {'character': 79, 'line': 20}, 'end': {'character': 81, 'line': 20}}, 'severity': 2, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'source': 'pycodestyle'}, {'range': {'start': {'character': 79, 'line': 33}, 'end': {'character': 86, 'line': 33}}, 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'source': 'pycodestyle'}, {'range': {'start': {'character': 38, 'line': 85}, 'end': {'character': 66, 'line': 85}}, 'severity': 2, 'message': 'E701 multiple statements on one line (colon)', 'code': 'E701', 'source': 'pycodestyle'}, {'range': {'start': {'character': 32, 'line': 106}, 'end': {'character': 32, 'line': 106}}, 'severity': 2, 'message': 'W292 no newline at end of file', 'code': 'W292', 'source': 'pycodestyle'}], [], [], []] [hook] 2018-02-18 16:07:17,739 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/.local/bin/charm', 'diagnostics': [{'range': {'start': {'character': 79, 'line': 20}, 'end': {'character': 81, 'line': 20}}, 'severity': 2, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'source': 'pycodestyle'}, {'range': {'start': {'character': 79, 'line': 33}, 'end': {'character': 86, 'line': 33}}, 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'source': 'pycodestyle'}, {'range': {'start': {'character': 38, 'line': 85}, 'end': {'character': 66, 'line': 85}}, 'severity': 2, 'message': 'E701 multiple statements on one line (colon)', 'code': 'E701', 'source': 'pycodestyle'}, {'range': {'start': {'character': 32, 'line': 106}, 'end': {'character': 32, 'line': 106}}, 'severity': 2, 'message': 'W292 no newline at end of file', 'code': 'W292', 'source': 'pycodestyle'}]} 2018-02-19 00:23:39,107 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:23:39,107 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:23:39,108 UTC - DEBUG - pyls.language_server - Language server initialized with {'initializationOptions': {}, 'capabilities': {}, 'trace': 'off', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-19 00:23:39,374 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:23:39,375 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:23:39,375 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:23:39,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:23:39,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:23:39,375 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:23:39,376 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:23:39,377 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:23:39,377 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 00:23:39,377 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: document: None config: 2018-02-19 00:23:39,377 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:23:39,377 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: document: None config: 2018-02-19 00:23:39,377 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:23:39,378 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: document: None config: 2018-02-19 00:23:39,378 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:23:39,378 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: document: None config: 2018-02-19 00:23:39,378 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:23:39,378 UTC - INFO - pyls.python_ls - Server capabilities: {'codeLensProvider': {'resolveProvider': False}, 'experimental': {}, 'documentFormattingProvider': True, 'codeActionProvider': True, 'textDocumentSync': 2, 'documentRangeFormattingProvider': True, 'documentSymbolProvider': True, 'renameProvider': True, 'definitionProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'referencesProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'executeCommandProvider': {'commands': []}, 'hoverProvider': True} 2018-02-19 00:23:39,401 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title, attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n if self.lastChapter != 0:\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n else:\\n defPoznN = \\"ancestor::defpozn[1]/@n\\"\\n return self.refKniha + \'.\' + refKapitola + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:23:39,402 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:23:39,402 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:23:39,903 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:23:40,055 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 255, 'character': 19}, 'start': {'line': 255, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 408, 'character': 19}, 'start': {'line': 408, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 441, 'character': 19}, 'start': {'line': 441, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:23:40,056 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:23:40,056 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:23:40,056 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:23:40,056 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:23:40,057 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:23:40,057 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:23:40,057 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:23:40,058 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:23:40,088 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:23:40,088 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:23:40,088 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:23:40,089 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:23:40,089 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:23:40,089 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:23:40,089 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:23:40,090 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:23:40,090 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:23:40,248 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 233, 'character': 49}, 'start': {'line': 233, 'character': 12}}, 'message': "local variable 'defPoznN' is assigned to but never used"}, {'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 234, 'character': 76}, 'start': {'line': 234, 'character': 41}}, 'message': "undefined name 'refKapitola'"}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 255, 'character': 19}, 'start': {'line': 255, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 408, 'character': 19}, 'start': {'line': 408, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 441, 'character': 19}, 'start': {'line': 441, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 256, 'character': 28}, 'start': {'line': 256, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 231, 'character': 81}, 'start': {'line': 231, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 242, 'character': 86}, 'start': {'line': 242, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 246, 'character': 83}, 'start': {'line': 246, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 92}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 250, 'character': 86}, 'start': {'line': 250, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 263, 'character': 83}, 'start': {'line': 263, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 387, 'character': 81}, 'start': {'line': 387, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 452, 'character': 55}, 'start': {'line': 452, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:23:40,248 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 233, 'character': 49}, 'start': {'line': 233, 'character': 12}}, 'message': "local variable 'defPoznN' is assigned to but never used"}, {'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 234, 'character': 76}, 'start': {'line': 234, 'character': 41}}, 'message': "undefined name 'refKapitola'"}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 255, 'character': 19}, 'start': {'line': 255, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 408, 'character': 19}, 'start': {'line': 408, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 441, 'character': 19}, 'start': {'line': 441, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 256, 'character': 28}, 'start': {'line': 256, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 231, 'character': 81}, 'start': {'line': 231, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 242, 'character': 86}, 'start': {'line': 242, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 246, 'character': 83}, 'start': {'line': 246, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 92}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 250, 'character': 86}, 'start': {'line': 250, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 263, 'character': 83}, 'start': {'line': 263, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 387, 'character': 81}, 'start': {'line': 387, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 452, 'character': 55}, 'start': {'line': 452, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:24:22,508 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title, attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n if self.lastChapter != 0:\\n pass\\n else:\\n defPoznN = \\"ancestor::defpozn[1]/@n\\"\\n return self.refKniha + \'.\' + refKapitola + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:24:23,010 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:24:23,078 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 409, 'character': 19}, 'start': {'line': 409, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 442, 'character': 19}, 'start': {'line': 442, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:23,079 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:23,080 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:23,080 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:24:23,084 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:23,084 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:23,085 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:24:23,157 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 234, 'character': 49}, 'start': {'line': 234, 'character': 12}}, 'message': "local variable 'defPoznN' is assigned to but never used"}, {'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 235, 'character': 76}, 'start': {'line': 235, 'character': 41}}, 'message': "undefined name 'refKapitola'"}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 409, 'character': 19}, 'start': {'line': 409, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 442, 'character': 19}, 'start': {'line': 442, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 257, 'character': 28}, 'start': {'line': 257, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:24:23,157 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 234, 'character': 49}, 'start': {'line': 234, 'character': 12}}, 'message': "local variable 'defPoznN' is assigned to but never used"}, {'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 235, 'character': 76}, 'start': {'line': 235, 'character': 41}}, 'message': "undefined name 'refKapitola'"}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 409, 'character': 19}, 'start': {'line': 409, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 442, 'character': 19}, 'start': {'line': 442, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 257, 'character': 28}, 'start': {'line': 257, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:24:23,411 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title, attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n if self.lastChapter != 0:\\n pass\\n else:\\n defPoznN = \\"ancestor::defpozn[1]/@n\\"\\n return self.refKniha + \'.\' + refKapitola + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:24:23,413 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:24:23,914 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:24:24,012 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 409, 'character': 19}, 'start': {'line': 409, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 442, 'character': 19}, 'start': {'line': 442, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:24,013 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:24:24,021 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:24,021 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:24,022 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:24:24,102 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 234, 'character': 49}, 'start': {'line': 234, 'character': 12}}, 'message': "local variable 'defPoznN' is assigned to but never used"}, {'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 235, 'character': 76}, 'start': {'line': 235, 'character': 41}}, 'message': "undefined name 'refKapitola'"}], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 409, 'character': 19}, 'start': {'line': 409, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 442, 'character': 19}, 'start': {'line': 442, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 257, 'character': 28}, 'start': {'line': 257, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:24:24,102 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 234, 'character': 49}, 'start': {'line': 234, 'character': 12}}, 'message': "local variable 'defPoznN' is assigned to but never used"}, {'source': 'pyflakes', 'severity': 2, 'range': {'end': {'line': 235, 'character': 76}, 'start': {'line': 235, 'character': 41}}, 'message': "undefined name 'refKapitola'"}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 256, 'character': 19}, 'start': {'line': 256, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 409, 'character': 19}, 'start': {'line': 409, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 442, 'character': 19}, 'start': {'line': 442, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 257, 'character': 28}, 'start': {'line': 257, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:24:30,299 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title, attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n # if self.lastChapter != 0:\\n pass\\n else:\\n defPoznN = \\"ancestor::defpozn[1]/@n\\"\\n return self.refKniha + \'.\' + refKapitola + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 00:24:30,800 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:24:30,806 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 00:24:30,806 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:30,806 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:30,806 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:30,807 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:30,807 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:30,807 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:30,807 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:30,807 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:30,807 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:24:30,808 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:30,808 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:30,808 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:30,808 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:30,808 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:30,809 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:30,809 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:30,809 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:30,809 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:24:30,894 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pyflakes', 'severity': 1, 'range': {'end': {'line': 232, 'character': 29}, 'start': {'line': 232, 'character': 12}}, 'message': 'unexpected indent'}], [], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 232, 'character': 17}, 'start': {'line': 232, 'character': 12}}, 'message': 'E113 unexpected indentation', 'code': 'E113'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:24:30,894 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pyflakes', 'severity': 1, 'range': {'end': {'line': 232, 'character': 29}, 'start': {'line': 232, 'character': 12}}, 'message': 'unexpected indent'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 232, 'character': 17}, 'start': {'line': 232, 'character': 12}}, 'message': 'E113 unexpected indentation', 'code': 'E113'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:24:36,109 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title, attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n # if self.lastChapter != 0:\\n # pass\\n else:\\n defPoznN = \\"ancestor::defpozn[1]/@n\\"\\n return self.refKniha + \'.\' + refKapitola + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 00:24:36,611 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:24:36,616 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 00:24:36,616 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:36,616 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:36,616 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:36,616 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:36,617 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:36,617 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:36,617 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:36,617 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:36,617 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:36,618 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:36,619 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:36,619 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:24:36,697 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pyflakes', 'severity': 1, 'range': {'end': {'line': 233, 'character': 26}, 'start': {'line': 233, 'character': 12}}, 'message': 'invalid syntax'}], [], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:24:36,697 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pyflakes', 'severity': 1, 'range': {'end': {'line': 233, 'character': 26}, 'start': {'line': 233, 'character': 12}}, 'message': 'invalid syntax'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 86}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 83}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 248, 'character': 92}, 'start': {'line': 248, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 86}, 'start': {'line': 251, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 264, 'character': 83}, 'start': {'line': 264, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 388, 'character': 81}, 'start': {'line': 388, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 453, 'character': 55}, 'start': {'line': 453, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:24:55,334 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title, attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:24:55,336 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:24:55,838 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:24:55,995 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 19}, 'start': {'line': 251, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 404, 'character': 19}, 'start': {'line': 404, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 437, 'character': 19}, 'start': {'line': 437, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:24:55,996 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:55,996 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:55,996 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:55,997 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:55,997 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:55,997 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:55,997 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:55,998 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:55,998 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:24:56,003 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:56,003 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:24:56,003 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:24:56,003 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:56,003 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:56,004 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:24:56,004 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:24:56,004 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:24:56,004 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:24:56,081 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 19}, 'start': {'line': 251, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 404, 'character': 19}, 'start': {'line': 404, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 437, 'character': 19}, 'start': {'line': 437, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 252, 'character': 28}, 'start': {'line': 252, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 238, 'character': 86}, 'start': {'line': 238, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 242, 'character': 83}, 'start': {'line': 242, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 92}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 246, 'character': 86}, 'start': {'line': 246, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 259, 'character': 83}, 'start': {'line': 259, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 383, 'character': 81}, 'start': {'line': 383, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 448, 'character': 55}, 'start': {'line': 448, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:24:56,081 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 229, 'character': 19}, 'start': {'line': 229, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 251, 'character': 19}, 'start': {'line': 251, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 404, 'character': 19}, 'start': {'line': 404, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 437, 'character': 19}, 'start': {'line': 437, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 252, 'character': 28}, 'start': {'line': 252, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 226, 'character': 81}, 'start': {'line': 226, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 238, 'character': 86}, 'start': {'line': 238, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 242, 'character': 83}, 'start': {'line': 242, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 92}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 246, 'character': 86}, 'start': {'line': 246, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 259, 'character': 83}, 'start': {'line': 259, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 383, 'character': 81}, 'start': {'line': 383, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 448, 'character': 55}, 'start': {'line': 448, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:25:07,083 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 00:25:07,585 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:25:07,655 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:25:07,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:07,655 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:07,656 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:25:07,660 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:07,661 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:25:07,738 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 384, 'character': 81}, 'start': {'line': 384, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:25:07,738 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 384, 'character': 81}, 'start': {'line': 384, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:25:07,936 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = 0 # FIXME self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 00:25:07,941 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 00:25:08,442 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:25:08,599 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:25:08,600 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:08,600 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:08,600 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:08,600 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:08,600 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:08,601 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:08,601 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:08,601 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:08,601 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:25:08,609 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:08,610 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:08,610 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:08,610 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:08,610 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:08,611 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:08,611 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:08,611 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:08,611 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:25:08,769 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 384, 'character': 81}, 'start': {'line': 384, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:25:08,769 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 384, 'character': 81}, 'start': {'line': 384, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:25:32,936 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the source notes.\\n # TODO better explanation\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 00:25:32,937 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 00:25:33,446 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:25:33,602 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:25:33,603 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:33,603 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:33,603 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:33,603 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:33,603 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:33,604 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:33,604 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:33,604 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:33,604 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:25:33,612 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:33,613 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:33,613 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:33,613 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:33,613 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:33,614 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:33,614 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:33,614 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:33,614 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:25:33,774 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 384, 'character': 81}, 'start': {'line': 384, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:25:33,774 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 384, 'character': 81}, 'start': {'line': 384, 'character': 79}}, 'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:25:52,888 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-19 00:25:52,898 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-19 00:25:53,401 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:25:53,560 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:25:53,561 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:53,561 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:53,561 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:53,561 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:53,562 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:53,562 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:53,562 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:53,562 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:53,562 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:25:53,571 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:53,571 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:25:53,571 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:25:53,572 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:53,572 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:53,572 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:25:53,572 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:25:53,572 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:25:53,573 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:25:53,729 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:25:53,730 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:26:33,927 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-19 00:26:33,931 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-19 00:26:34,444 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:26:34,519 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}] 2018-02-19 00:26:34,519 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:26:34,520 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:26:34,527 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:26:34,527 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:26:34,527 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:26:34,528 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:26:34,528 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:26:34,528 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:26:34,528 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:26:34,528 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:26:34,528 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:26:34,607 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}], [{'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [{'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]] [hook] 2018-02-19 00:26:34,607 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'message': 'D100: Missing docstring in public module', 'code': 'D100'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'message': 'D101: Missing docstring in public class', 'code': 'D101'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'message': 'D107: Missing docstring in __init__', 'code': 'D107'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'pydocstyle', 'severity': 2, 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'message': 'D102: Missing docstring in public method', 'code': 'D102'}, {'source': 'mccabe', 'severity': 2, 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501'}, {'source': 'pycodestyle', 'severity': 2, 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'message': 'W292 no newline at end of file', 'code': 'W292'}]} 2018-02-19 00:29:20,139 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:29:20,140 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:29:20,141 UTC - DEBUG - pyls.language_server - Language server initialized with {'trace': 'off', 'capabilities': {}, 'initializationOptions': {}, 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-19 00:29:20,314 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:29:20,315 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:29:20,315 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:29:20,315 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:29:20,315 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:29:20,315 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:29:20,315 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:29:20,316 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:29:20,316 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:29:20,316 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:29:20,316 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:29:20,316 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:29:20,316 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:29:20,316 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:29:20,317 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-19 00:29:20,317 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-19 00:29:20,317 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:29:20,317 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-19 00:29:20,317 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:29:20,317 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-19 00:29:20,318 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:29:20,318 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-19 00:29:20,318 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:29:20,318 UTC - INFO - pyls.python_ls - Server capabilities: {'executeCommandProvider': {'commands': []}, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'experimental': {}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'renameProvider': True, 'documentRangeFormattingProvider': True, 'hoverProvider': True, 'documentFormattingProvider': True, 'documentSymbolProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'codeActionProvider': True, 'referencesProvider': True, 'textDocumentSync': 2, 'definitionProvider': True} 2018-02-19 00:29:20,339 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:29:20,340 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:29:20,340 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:29:20,841 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:29:20,841 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:20,842 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:20,842 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:20,842 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:20,843 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:20,843 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:20,844 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:20,844 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:29:20,965 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:29:20,966 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:29:21,010 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:21,010 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:21,010 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:21,010 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,010 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,011 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:21,011 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:21,011 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,011 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:29:21,095 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:29:21,096 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:29:21,096 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:29:21,467 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:29:21,467 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,468 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:29:21,562 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:21,563 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:29:21,629 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:29:21,630 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:29:21,630 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:29:38,837 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport xml.sax\\nimport enum\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:29:38,844 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:29:39,345 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:29:39,346 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:39,346 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:39,346 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:39,346 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:39,346 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:39,347 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:39,347 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:39,347 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:39,347 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:29:39,532 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:39,532 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:39,532 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:39,532 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:39,533 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:39,533 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:39,533 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:39,533 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:39,534 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:29:39,664 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:29:39,665 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:29:39,665 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:29:50,328 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport sys\\nimport enum\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 00:29:50,330 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 00:29:50,831 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:29:50,832 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:50,832 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:50,832 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:50,832 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:50,832 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:50,833 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:50,833 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:50,833 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:50,833 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:29:51,035 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:51,035 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:51,035 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:51,036 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:51,036 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:51,036 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:51,037 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:51,037 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:51,037 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:29:51,171 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:29:51,172 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:29:51,172 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:29:59,033 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport enum\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 00:29:59,035 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 00:29:59,535 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:29:59,536 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:59,536 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:59,537 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:59,537 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:59,537 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:59,537 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:59,537 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:59,538 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:59,538 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:29:59,646 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:59,646 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:29:59,646 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:29:59,647 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:59,647 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:59,647 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:29:59,647 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:29:59,647 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:29:59,647 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:29:59,726 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:29:59,727 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:29:59,727 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:30:05,236 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:30:05,238 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:30:05,738 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:30:05,739 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:05,740 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:30:05,907 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:05,908 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:30:05,908 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:30:05,908 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:05,908 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:05,908 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:05,908 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:30:05,909 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:05,909 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:30:05,990 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:30:05,990 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:30:05,991 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:30:15,427 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport logging\\nimport enum\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 00:30:15,429 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 00:30:15,931 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:30:15,931 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:15,932 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:30:15,932 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:30:15,932 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:15,932 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:15,933 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:15,933 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:30:15,933 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:15,933 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:30:16,124 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:16,124 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:30:16,125 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:30:16,125 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:16,125 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:16,125 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:16,126 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:30:16,126 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:16,126 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:30:16,256 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:30:16,257 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:30:16,258 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:30:29,266 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 00:30:29,268 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 00:30:29,770 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:30:29,770 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:29,771 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:30:29,771 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:30:29,771 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:29,771 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:29,772 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:29,772 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:30:29,772 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:29,772 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:30:29,936 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:29,936 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:30:29,936 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:30:29,937 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:29,937 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:29,937 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:30:29,937 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:30:29,937 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:30:29,938 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:30:30,015 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}] 2018-02-19 00:30:30,015 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}], [{'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]] [hook] 2018-02-19 00:30:30,016 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'line': 174, 'character': 36}, 'start': {'line': 174, 'character': 0}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'line': 206, 'character': 87}, 'start': {'line': 206, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'line': 208, 'character': 95}, 'start': {'line': 208, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 239, 'character': 86}, 'start': {'line': 239, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 243, 'character': 83}, 'start': {'line': 243, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'line': 244, 'character': 92}, 'start': {'line': 244, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'line': 247, 'character': 86}, 'start': {'line': 247, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'line': 260, 'character': 83}, 'start': {'line': 260, 'character': 79}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'range': {'end': {'line': 449, 'character': 55}, 'start': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'severity': 2, 'code': 'W292'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'line': 253, 'character': 28}, 'start': {'line': 253, 'character': 4}}, 'source': 'mccabe', 'severity': 2}, {'message': 'D100: Missing docstring in public module', 'range': {'end': {'line': 0, 'character': 19}, 'start': {'line': 0, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D100'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 78, 'character': 19}, 'start': {'line': 78, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 79, 'character': 19}, 'start': {'line': 79, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 84, 'character': 19}, 'start': {'line': 84, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 92, 'character': 19}, 'start': {'line': 92, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 96, 'character': 19}, 'start': {'line': 96, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 97, 'character': 19}, 'start': {'line': 97, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 102, 'character': 19}, 'start': {'line': 102, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 145, 'character': 19}, 'start': {'line': 145, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 149, 'character': 19}, 'start': {'line': 149, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 158, 'character': 19}, 'start': {'line': 158, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 166, 'character': 19}, 'start': {'line': 166, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D101: Missing docstring in public class', 'range': {'end': {'line': 174, 'character': 19}, 'start': {'line': 174, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D101'}, {'message': 'D107: Missing docstring in __init__', 'range': {'end': {'line': 175, 'character': 19}, 'start': {'line': 175, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D107'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 189, 'character': 19}, 'start': {'line': 189, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 204, 'character': 19}, 'start': {'line': 204, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 210, 'character': 19}, 'start': {'line': 210, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 216, 'character': 19}, 'start': {'line': 216, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 224, 'character': 19}, 'start': {'line': 224, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 230, 'character': 19}, 'start': {'line': 230, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 252, 'character': 19}, 'start': {'line': 252, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 405, 'character': 19}, 'start': {'line': 405, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}, {'message': 'D102: Missing docstring in public method', 'range': {'end': {'line': 438, 'character': 19}, 'start': {'line': 438, 'character': 0}}, 'source': 'pydocstyle', 'severity': 2, 'code': 'D102'}]} 2018-02-19 00:33:31,860 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:33:31,861 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:33:31,861 UTC - DEBUG - pyls.language_server - Language server initialized with {'initializationOptions': {}, 'capabilities': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off'} 2018-02-19 00:33:32,022 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:33:32,022 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:33:32,022 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:33:32,022 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:33:32,022 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:33:32,022 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:33:32,023 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:33:32,023 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:33:32,023 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 00:33:32,023 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-19 00:33:32,024 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:33:32,024 UTC - INFO - pyls.python_ls - Server capabilities: {'codeLensProvider': {'resolveProvider': False}, 'hoverProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'executeCommandProvider': {'commands': []}, 'definitionProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentRangeFormattingProvider': True, 'codeActionProvider': True, 'referencesProvider': True, 'documentFormattingProvider': True, 'textDocumentSync': 2, 'documentSymbolProvider': True, 'renameProvider': True, 'experimental': {}} 2018-02-19 00:33:32,046 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\n# -*- coding: utf-8 -*-\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:33:32,047 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:33:32,048 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:33:32,548 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:33:32,606 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 79, 'character': 0}, 'end': {'line': 79, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 84, 'character': 0}, 'end': {'line': 84, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 92, 'character': 0}, 'end': {'line': 92, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 405, 'character': 0}, 'end': {'line': 405, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 438, 'character': 0}, 'end': {'line': 438, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}] 2018-02-19 00:33:32,607 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:33:32,607 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:33:32,607 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:32,607 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:32,607 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:32,608 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:33:32,608 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:32,608 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:33:32,691 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:32,691 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:32,692 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:33:32,714 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 79, 'character': 0}, 'end': {'line': 79, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 84, 'character': 0}, 'end': {'line': 84, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 92, 'character': 0}, 'end': {'line': 92, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 405, 'character': 0}, 'end': {'line': 405, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 438, 'character': 0}, 'end': {'line': 438, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}], [{'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'source': 'pycodestyle', 'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1'}, {'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)'}, {'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)'}, {'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)'}, {'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 260, 'character': 79}, 'end': {'line': 260, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 449, 'character': 55}, 'end': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file'}], [], [{'range': {'start': {'line': 253, 'character': 4}, 'end': {'line': 253, 'character': 28}}, 'source': 'mccabe', 'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}]] [hook] 2018-02-19 00:33:32,714 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 79, 'character': 0}, 'end': {'line': 79, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 84, 'character': 0}, 'end': {'line': 84, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 92, 'character': 0}, 'end': {'line': 92, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 405, 'character': 0}, 'end': {'line': 405, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 438, 'character': 0}, 'end': {'line': 438, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'source': 'pycodestyle', 'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1'}, {'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)'}, {'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)'}, {'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)'}, {'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 260, 'character': 79}, 'end': {'line': 260, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 449, 'character': 55}, 'end': {'line': 449, 'character': 55}}, 'source': 'pycodestyle', 'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file'}, {'range': {'start': {'line': 253, 'character': 4}, 'end': {'line': 253, 'character': 28}}, 'source': 'mccabe', 'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}]} 2018-02-19 00:33:38,829 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:33:38,831 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:33:39,331 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:33:39,390 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 404, 'character': 0}, 'end': {'line': 404, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 437, 'character': 0}, 'end': {'line': 437, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}] 2018-02-19 00:33:39,390 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:39,391 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:33:39,474 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:39,474 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:33:39,474 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:33:39,474 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:39,474 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:39,475 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:33:39,475 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:33:39,475 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:33:39,475 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:33:39,480 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 404, 'character': 0}, 'end': {'line': 404, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 437, 'character': 0}, 'end': {'line': 437, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}], [{'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'source': 'pycodestyle', 'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1'}, {'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)'}, {'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)'}, {'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)'}, {'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 448, 'character': 55}, 'end': {'line': 448, 'character': 55}}, 'source': 'pycodestyle', 'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file'}], [], [{'range': {'start': {'line': 252, 'character': 4}, 'end': {'line': 252, 'character': 28}}, 'source': 'mccabe', 'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}]] [hook] 2018-02-19 00:33:39,480 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 404, 'character': 0}, 'end': {'line': 404, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 437, 'character': 0}, 'end': {'line': 437, 'character': 19}}, 'source': 'pydocstyle', 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'source': 'pycodestyle', 'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1'}, {'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)'}, {'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)'}, {'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)'}, {'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)'}, {'range': {'start': {'line': 259, 'character': 79}, 'end': {'line': 259, 'character': 83}}, 'source': 'pycodestyle', 'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)'}, {'range': {'start': {'line': 448, 'character': 55}, 'end': {'line': 448, 'character': 55}}, 'source': 'pycodestyle', 'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file'}, {'range': {'start': {'line': 252, 'character': 4}, 'end': {'line': 252, 'character': 28}}, 'source': 'mccabe', 'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}]} 2018-02-19 00:34:49,639 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:34:49,640 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:34:49,640 UTC - DEBUG - pyls.language_server - Language server initialized with {'capabilities': {}, 'initializationOptions': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off'} 2018-02-19 00:34:49,792 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:34:49,792 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:34:49,793 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:34:49,794 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: document: None config: 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: document: None config: 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: document: None config: 2018-02-19 00:34:49,794 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:34:49,795 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: document: None config: 2018-02-19 00:34:49,795 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:34:49,795 UTC - INFO - pyls.python_ls - Server capabilities: {'executeCommandProvider': {'commands': []}, 'renameProvider': True, 'documentSymbolProvider': True, 'textDocumentSync': 2, 'hoverProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'experimental': {}, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'codeActionProvider': True, 'referencesProvider': True, 'documentRangeFormattingProvider': True, 'definitionProvider': True, 'documentFormattingProvider': True, 'codeLensProvider': {'resolveProvider': False}} 2018-02-19 00:34:49,816 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:34:49,818 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:34:49,818 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:34:50,318 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:34:50,377 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'code': 'D100', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 19, 'line': 101}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 188}, 'end': {'character': 19, 'line': 188}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 251}, 'end': {'character': 19, 'line': 251}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 19, 'line': 404}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 19, 'line': 437}}, 'code': 'D102', 'source': 'pydocstyle'}] 2018-02-19 00:34:50,378 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:34:50,378 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:34:50,378 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:50,378 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:50,378 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:50,378 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:34:50,379 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:50,379 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:50,460 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:34:50,480 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'code': 'D100', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 19, 'line': 101}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 188}, 'end': {'character': 19, 'line': 188}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 251}, 'end': {'character': 19, 'line': 251}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 19, 'line': 404}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 19, 'line': 437}}, 'code': 'D102', 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'code': 'E302', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 238}, 'end': {'character': 86, 'line': 238}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 83, 'line': 242}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 92, 'line': 243}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 259}, 'end': {'character': 83, 'line': 259}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'start': {'character': 55, 'line': 448}, 'end': {'character': 55, 'line': 448}}, 'code': 'W292', 'source': 'pycodestyle'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'character': 4, 'line': 252}, 'end': {'character': 28, 'line': 252}}, 'severity': 2, 'source': 'mccabe'}]] [hook] 2018-02-19 00:34:50,480 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'code': 'D100', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 19, 'line': 101}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 188}, 'end': {'character': 19, 'line': 188}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 251}, 'end': {'character': 19, 'line': 251}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 19, 'line': 404}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 19, 'line': 437}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'code': 'E302', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 238}, 'end': {'character': 86, 'line': 238}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 83, 'line': 242}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 92, 'line': 243}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 259}, 'end': {'character': 83, 'line': 259}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'start': {'character': 55, 'line': 448}, 'end': {'character': 55, 'line': 448}}, 'code': 'W292', 'source': 'pycodestyle'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'character': 4, 'line': 252}, 'end': {'character': 28, 'line': 252}}, 'severity': 2, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:34:51,528 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:34:51,529 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:34:52,030 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py config: 2018-02-19 00:34:52,084 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'code': 'D100', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 19, 'line': 101}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 188}, 'end': {'character': 19, 'line': 188}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 251}, 'end': {'character': 19, 'line': 251}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 19, 'line': 404}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 19, 'line': 437}}, 'code': 'D102', 'source': 'pydocstyle'}] 2018-02-19 00:34:52,084 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:52,084 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:34:52,084 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:34:52,084 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:52,084 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:52,085 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:52,085 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:34:52,085 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:52,085 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:34:52,166 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:52,166 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:34:52,166 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:34:52,166 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:52,166 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:52,167 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:34:52,167 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:34:52,167 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:34:52,167 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:34:52,171 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'code': 'D100', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 19, 'line': 101}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 188}, 'end': {'character': 19, 'line': 188}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 251}, 'end': {'character': 19, 'line': 251}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 19, 'line': 404}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 19, 'line': 437}}, 'code': 'D102', 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'code': 'E302', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 238}, 'end': {'character': 86, 'line': 238}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 83, 'line': 242}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 92, 'line': 243}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 259}, 'end': {'character': 83, 'line': 259}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'start': {'character': 55, 'line': 448}, 'end': {'character': 55, 'line': 448}}, 'code': 'W292', 'source': 'pycodestyle'}], [], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'character': 4, 'line': 252}, 'end': {'character': 28, 'line': 252}}, 'severity': 2, 'source': 'mccabe'}]] [hook] 2018-02-19 00:34:52,172 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'code': 'D100', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 95}, 'end': {'character': 19, 'line': 95}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 19, 'line': 101}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'code': 'D101', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'code': 'D107', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 188}, 'end': {'character': 19, 'line': 188}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 251}, 'end': {'character': 19, 'line': 251}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 404}, 'end': {'character': 19, 'line': 404}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'start': {'character': 0, 'line': 437}, 'end': {'character': 19, 'line': 437}}, 'code': 'D102', 'source': 'pydocstyle'}, {'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'code': 'E302', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 238}, 'end': {'character': 86, 'line': 238}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 83, 'line': 242}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 92, 'line': 243}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'start': {'character': 79, 'line': 259}, 'end': {'character': 83, 'line': 259}}, 'code': 'E501', 'source': 'pycodestyle'}, {'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'start': {'character': 55, 'line': 448}, 'end': {'character': 55, 'line': 448}}, 'code': 'W292', 'source': 'pycodestyle'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'character': 4, 'line': 252}, 'end': {'character': 28, 'line': 252}}, 'severity': 2, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:35:26,883 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:35:26,883 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:35:26,884 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'capabilities': {}, 'initializationOptions': {}, 'trace': 'off'} 2018-02-19 00:35:27,034 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:35:27,035 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:35:27,036 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:35:27,036 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-19 00:35:27,036 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:35:27,037 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-19 00:35:27,037 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:35:27,037 UTC - INFO - pyls.python_ls - Server capabilities: {'codeActionProvider': True, 'referencesProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'documentFormattingProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'experimental': {}, 'textDocumentSync': 2, 'documentSymbolProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'executeCommandProvider': {'commands': []}, 'hoverProvider': True, 'documentRangeFormattingProvider': True, 'definitionProvider': True, 'renameProvider': True} 2018-02-19 00:35:27,059 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:35:27,060 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:35:27,061 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:35:27,561 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:35:27,620 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 00:35:27,621 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:35:27,621 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:35:27,621 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:27,621 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:27,621 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:27,622 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:35:27,622 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:27,622 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:35:27,637 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:27,638 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:35:27,729 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'D100', 'severity': 2, 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'severity': 2, 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], [], [{'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle', 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'severity': 2, 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle', 'code': 'W292'}]] [hook] 2018-02-19 00:35:27,729 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'D100', 'severity': 2, 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'severity': 2, 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}, {'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle', 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'severity': 2, 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle', 'code': 'W292'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:35:28,914 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:35:28,916 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:35:29,417 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 00:35:29,472 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 00:35:29,472 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:29,472 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:35:29,472 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:35:29,472 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:29,472 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:29,473 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:29,473 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:35:29,473 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:29,473 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:35:29,488 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:29,488 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:35:29,488 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:35:29,488 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:29,488 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:29,489 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:35:29,489 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:35:29,489 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:35:29,489 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:35:29,561 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'D100', 'severity': 2, 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}], [{'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'severity': 2, 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], [], [{'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle', 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'severity': 2, 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle', 'code': 'W292'}]] [hook] 2018-02-19 00:35:29,561 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'D100', 'severity': 2, 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D101', 'severity': 2, 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class'}, {'code': 'D107', 'severity': 2, 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'code': 'D102', 'severity': 2, 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method'}, {'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'severity': 2, 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}, {'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle', 'code': 'E302'}, {'message': 'E501 line too long (86 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (94 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (91 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle', 'code': 'E501'}, {'message': 'W292 no newline at end of file', 'severity': 2, 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle', 'code': 'W292'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:36:01,963 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:36:01,964 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:36:01,964 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'initializationOptions': {}, 'capabilities': {}, 'trace': 'off', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-19 00:36:02,120 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:36:02,121 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:36:02,122 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] config: document: None workspace: 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] config: document: None workspace: 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - pyls_commands [hook] config: document: None workspace: 2018-02-19 00:36:02,122 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:36:02,123 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] config: document: None workspace: 2018-02-19 00:36:02,123 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:36:02,123 UTC - INFO - pyls.python_ls - Server capabilities: {'referencesProvider': True, 'documentSymbolProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'textDocumentSync': 2, 'definitionProvider': True, 'hoverProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'executeCommandProvider': {'commands': []}, 'documentRangeFormattingProvider': True, 'renameProvider': True, 'codeActionProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentFormattingProvider': True, 'experimental': {}} 2018-02-19 00:36:02,145 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:36:02,146 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:36:02,146 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:36:02,647 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:36:02,647 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:36:02,647 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:36:02,647 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:02,647 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:02,648 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:02,649 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:36:02,649 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:02,649 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:36:02,720 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': \'### FIXME ###\'\\n })\\n self.indexOT(no=N)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:36:02,732 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:36:02,832 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle'}] 2018-02-19 00:36:02,833 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:02,833 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:36:02,834 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:36:02,834 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:02,834 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:02,834 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:02,835 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:36:02,835 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:02,835 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:36:02,887 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:36:02,887 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:36:03,238 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:36:03,238 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:03,239 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:36:03,375 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle'}] 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:36:03,376 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:36:03,394 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:36:03,394 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 448}, 'start': {'character': 55, 'line': 448}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 404}, 'start': {'character': 0, 'line': 404}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 437}, 'start': {'character': 0, 'line': 437}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:38:11,153 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:38:11,155 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:38:11,655 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:38:11,656 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:11,656 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:11,656 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:11,656 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:11,656 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:11,657 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:11,657 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:11,657 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:11,657 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:38:11,892 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle'}] 2018-02-19 00:38:11,893 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:11,893 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:11,893 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:11,893 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:11,893 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:11,894 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:11,894 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:11,894 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:11,894 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:38:11,920 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 447}, 'start': {'character': 55, 'line': 447}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:38:11,921 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 259}, 'start': {'character': 79, 'line': 259}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 447}, 'start': {'character': 55, 'line': 447}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 403}, 'start': {'character': 0, 'line': 403}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 436}, 'start': {'character': 0, 'line': 436}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 252}, 'start': {'character': 4, 'line': 252}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:38:38,517 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT():\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 00:38:39,018 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:38:39,018 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,019 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,019 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:39,019 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,019 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,019 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,019 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,020 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,020 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:38:39,145 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}] 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,146 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,147 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,147 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:38:39,162 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:38:39,162 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:38:39,235 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT():\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 00:38:39,236 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 00:38:39,737 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:38:39,737 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,737 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,738 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:39,738 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,738 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,738 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,739 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,739 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,739 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:38:39,980 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}] 2018-02-19 00:38:39,981 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,981 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,981 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:39,981 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,981 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,982 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:39,982 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:39,982 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:39,982 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:38:39,999 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:38:40,000 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:38:53,162 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:38:53,664 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:38:53,664 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:53,664 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:53,664 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:53,664 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:53,664 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:53,665 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:53,665 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:53,665 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:53,665 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:38:53,811 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}] 2018-02-19 00:38:53,812 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:53,812 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:53,812 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:53,812 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:53,812 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:53,812 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:53,813 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:53,813 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:53,813 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:38:53,832 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:38:53,832 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:38:53,956 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 00:38:53,958 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 00:38:54,459 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:38:54,459 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:54,459 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:54,459 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:54,459 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:54,460 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:54,460 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:54,460 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:54,460 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:54,460 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:38:54,706 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}] 2018-02-19 00:38:54,707 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:54,707 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:38:54,707 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:38:54,707 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:54,707 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:54,708 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:38:54,708 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:38:54,708 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:38:54,708 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:38:54,731 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:38:54,731 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:39:06,382 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 00:39:06,883 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:39:06,884 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:06,884 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:39:06,884 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:39:06,884 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:06,885 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:06,885 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:06,885 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:39:06,885 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:06,885 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:39:07,021 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}] 2018-02-19 00:39:07,021 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:07,021 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:39:07,021 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:39:07,021 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:07,022 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:07,022 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:07,022 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:39:07,022 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:07,022 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:39:07,038 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:39:07,038 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:39:07,363 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 00:39:07,365 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 00:39:07,865 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:39:07,866 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:07,866 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:39:07,866 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:39:07,866 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:07,866 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:07,866 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:07,867 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:39:07,867 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:07,867 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:39:08,041 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}] 2018-02-19 00:39:08,041 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:08,041 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 00:39:08,042 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:39:08,062 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}], [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}], [{'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], []] [hook] 2018-02-19 00:39:08,062 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'E302', 'severity': 2, 'message': 'E302 expected 2 blank lines, found 1', 'range': {'end': {'character': 36, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (86 > 79 characters)', 'range': {'end': {'character': 87, 'line': 205}, 'start': {'character': 79, 'line': 205}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (94 > 79 characters)', 'range': {'end': {'character': 95, 'line': 207}, 'start': {'character': 79, 'line': 207}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 238}, 'start': {'character': 79, 'line': 238}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 242}, 'start': {'character': 79, 'line': 242}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (91 > 79 characters)', 'range': {'end': {'character': 92, 'line': 243}, 'start': {'character': 79, 'line': 243}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (85 > 79 characters)', 'range': {'end': {'character': 86, 'line': 246}, 'start': {'character': 79, 'line': 246}}, 'source': 'pycodestyle'}, {'code': 'E501', 'severity': 2, 'message': 'E501 line too long (82 > 79 characters)', 'range': {'end': {'character': 83, 'line': 262}, 'start': {'character': 79, 'line': 262}}, 'source': 'pycodestyle'}, {'code': 'W292', 'severity': 2, 'message': 'W292 no newline at end of file', 'range': {'end': {'character': 55, 'line': 450}, 'start': {'character': 55, 'line': 450}}, 'source': 'pycodestyle'}, {'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'range': {'end': {'character': 19, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 77}, 'start': {'character': 0, 'line': 77}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 78}, 'start': {'character': 0, 'line': 78}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 83}, 'start': {'character': 0, 'line': 83}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 91}, 'start': {'character': 0, 'line': 91}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 95}, 'start': {'character': 0, 'line': 95}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 96}, 'start': {'character': 0, 'line': 96}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 101}, 'start': {'character': 0, 'line': 101}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 144}, 'start': {'character': 0, 'line': 144}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 148}, 'start': {'character': 0, 'line': 148}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 157}, 'start': {'character': 0, 'line': 157}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 165}, 'start': {'character': 0, 'line': 165}}, 'source': 'pydocstyle'}, {'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class', 'range': {'end': {'character': 19, 'line': 173}, 'start': {'character': 0, 'line': 173}}, 'source': 'pydocstyle'}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'range': {'end': {'character': 19, 'line': 174}, 'start': {'character': 0, 'line': 174}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 188}, 'start': {'character': 0, 'line': 188}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 203}, 'start': {'character': 0, 'line': 203}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 209}, 'start': {'character': 0, 'line': 209}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 215}, 'start': {'character': 0, 'line': 215}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 223}, 'start': {'character': 0, 'line': 223}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 229}, 'start': {'character': 0, 'line': 229}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 251}, 'start': {'character': 0, 'line': 251}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 254}, 'start': {'character': 0, 'line': 254}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 406}, 'start': {'character': 0, 'line': 406}}, 'source': 'pydocstyle'}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'range': {'end': {'character': 19, 'line': 439}, 'start': {'character': 0, 'line': 439}}, 'source': 'pydocstyle'}, {'severity': 2, 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'end': {'character': 28, 'line': 255}, 'start': {'character': 4, 'line': 255}}, 'source': 'mccabe'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:41:22,113 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 00:41:22,113 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 00:41:22,113 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'capabilities': {}, 'initializationOptions': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'trace': 'off'} 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 00:41:22,309 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 00:41:22,310 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 00:41:22,310 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 00:41:22,310 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 00:41:22,310 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 00:41:22,310 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 00:41:22,310 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 00:41:22,310 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] config: document: None workspace: 2018-02-19 00:41:22,310 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 00:41:22,310 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] config: document: None workspace: 2018-02-19 00:41:22,311 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 00:41:22,311 UTC - DEBUG - pyls.config.config - pyls_commands [hook] config: document: None workspace: 2018-02-19 00:41:22,311 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 00:41:22,311 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] config: document: None workspace: 2018-02-19 00:41:22,311 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 00:41:22,311 UTC - INFO - pyls.python_ls - Server capabilities: {'referencesProvider': True, 'renameProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'codeActionProvider': True, 'definitionProvider': True, 'hoverProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'experimental': {}, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'executeCommandProvider': {'commands': []}, 'documentRangeFormattingProvider': True, 'documentFormattingProvider': True, 'documentSymbolProvider': True, 'textDocumentSync': 2} 2018-02-19 00:41:22,335 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 00:41:22,336 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:41:22,336 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 00:41:22,837 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:41:22,951 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 406, 'character': 0}, 'end': {'line': 406, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 439, 'character': 0}, 'end': {'line': 439, 'character': 19}}}] 2018-02-19 00:41:22,952 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:41:22,952 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:41:22,953 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:41:22,953 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:41:22,953 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:41:22,954 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:41:22,954 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:41:22,954 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:41:22,986 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:41:22,986 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:41:22,986 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:41:22,986 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:41:22,986 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:41:22,987 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:41:22,987 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:41:22,987 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:41:22,987 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:41:23,156 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 406, 'character': 0}, 'end': {'line': 406, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 439, 'character': 0}, 'end': {'line': 439, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 450, 'character': 55}, 'end': {'line': 450, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:41:23,156 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 406, 'character': 0}, 'end': {'line': 406, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 439, 'character': 0}, 'end': {'line': 439, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 450, 'character': 55}, 'end': {'line': 450, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:44:37,738 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 00:44:38,240 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:44:38,295 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}] 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:38,296 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:44:38,312 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:38,312 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:44:38,312 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:44:38,313 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:38,313 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:38,313 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:38,313 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:44:38,313 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:38,313 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:44:38,398 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:44:38,398 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:44:38,439 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:44:38,440 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 00:44:38,941 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:44:39,008 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}] 2018-02-19 00:44:39,008 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:39,008 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:44:39,008 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:44:39,008 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:39,008 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:39,009 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:39,009 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:44:39,009 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:39,009 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:44:39,025 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:44:39,026 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:44:39,101 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:44:39,101 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:45:02,203 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 00:45:02,204 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 00:45:02,705 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:45:02,791 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}] 2018-02-19 00:45:02,791 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:02,792 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:45:02,792 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:45:02,792 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:02,792 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:02,792 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:02,792 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:45:02,793 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:02,793 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:45:02,820 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:02,821 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:45:02,821 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:45:02,821 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:02,821 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:02,822 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:02,822 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:45:02,822 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:02,822 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:45:02,955 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:45:02,956 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:45:54,058 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 00:45:54,560 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:45:54,614 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}] 2018-02-19 00:45:54,614 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:54,615 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:45:54,630 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:45:54,631 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:45:54,702 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:45:54,702 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:46:01,720 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:46:01,723 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 00:46:02,224 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:46:02,347 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}] 2018-02-19 00:46:02,348 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:02,348 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:46:02,348 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:46:02,348 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:02,349 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:02,349 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:02,349 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:46:02,350 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:02,350 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:46:02,388 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:02,388 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:46:02,388 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:46:02,388 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:02,389 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:02,389 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:02,389 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:46:02,389 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:02,390 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:46:02,534 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:46:02,534 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 251, 'character': 0}, 'end': {'line': 251, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 254, 'character': 0}, 'end': {'line': 254, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 407, 'character': 0}, 'end': {'line': 407, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 440, 'character': 0}, 'end': {'line': 440, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 255, 'character': 4}, 'end': {'line': 255, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 238, 'character': 79}, 'end': {'line': 238, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 262, 'character': 79}, 'end': {'line': 262, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 451, 'character': 55}, 'end': {'line': 451, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:46:49,601 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\"\\n return self.refKniha + \'.\' + self.lastChapter + \'.\' + self.lastVerse\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 00:46:50,103 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:46:50,156 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}] 2018-02-19 00:46:50,156 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:50,156 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:46:50,156 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:46:50,156 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:50,157 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:50,157 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:50,157 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:46:50,157 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:50,157 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:46:50,172 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:50,172 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:46:50,172 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:46:50,172 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:50,172 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:50,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:46:50,173 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:46:50,173 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:46:50,173 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:46:50,243 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:46:50,243 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:47:11,522 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 00:47:12,024 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:47:12,081 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}] 2018-02-19 00:47:12,081 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,081 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,082 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:47:12,099 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,099 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,099 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:47:12,099 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,099 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,100 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,100 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,100 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,100 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:47:12,172 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:47:12,172 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:47:12,287 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = self.lastBook + \'.\' + self.lastChapter\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 00:47:12,289 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 00:47:12,790 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:47:12,861 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}] 2018-02-19 00:47:12,862 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,862 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,862 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:47:12,862 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,863 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,863 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,863 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,863 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,863 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:47:12,898 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,898 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,899 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:47:12,899 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,899 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,899 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:47:12,899 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:47:12,900 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:47:12,900 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:47:13,008 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:47:13,008 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:48:23,224 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = refBase + \'.\' + attrs[\'n\']\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-19 00:48:23,225 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-19 00:48:23,726 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:48:23,828 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}] 2018-02-19 00:48:23,829 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:23,829 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:48:23,829 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:48:23,829 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:23,830 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:23,830 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:23,830 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:48:23,830 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:23,831 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:48:23,854 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:23,855 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:48:23,855 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:48:23,855 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:23,855 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:23,856 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:23,856 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:48:23,856 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:23,856 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:48:23,977 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:48:23,978 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:48:50,843 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-19 00:48:51,344 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:48:51,398 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}] 2018-02-19 00:48:51,398 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:51,398 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:51,399 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:48:51,415 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:51,415 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:48:51,415 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:48:51,416 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:51,416 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:51,416 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:51,416 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:48:51,416 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:51,416 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:48:51,490 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:48:51,490 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:48:51,615 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-19 00:48:51,616 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-19 00:48:52,117 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:48:52,177 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}] 2018-02-19 00:48:52,177 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:52,177 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:48:52,177 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:48:52,177 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:52,177 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:52,178 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:52,178 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:48:52,178 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:52,178 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:48:52,224 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:52,224 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:48:52,225 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:48:52,302 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:48:52,303 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 441, 'character': 0}, 'end': {'line': 441, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 452, 'character': 55}, 'end': {'line': 452, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:49:50,158 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': self.lastChapter + \'.\' + self.lastVerse})\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-19 00:49:50,659 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:49:50,664 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:49:50,665 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:49:50,667 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:49:50,739 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pyflakes', 'message': 'invalid syntax', 'range': {'start': {'line': 413, 'character': 33}, 'end': {'line': 413, 'character': 67}}, 'severity': 1}], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 413, 'character': 16}, 'end': {'line': 413, 'character': 34}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 414, 'character': 12}, 'end': {'line': 414, 'character': 33}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 412, 'character': 17}, 'end': {'line': 412, 'character': 63}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 416, 'character': 12}, 'end': {'line': 416, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 418, 'character': 8}, 'end': {'line': 418, 'character': 26}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 421, 'character': 8}, 'end': {'line': 421, 'character': 29}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 424, 'character': 8}, 'end': {'line': 424, 'character': 33}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 427, 'character': 8}, 'end': {'line': 427, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 430, 'character': 8}, 'end': {'line': 430, 'character': 44}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 433, 'character': 8}, 'end': {'line': 433, 'character': 46}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 438, 'character': 8}, 'end': {'line': 438, 'character': 32}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 440, 'character': 16}, 'end': {'line': 440, 'character': 42}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 443, 'character': 4}, 'end': {'line': 443, 'character': 35}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 27}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E502 the backslash is redundant between brackets', 'code': 'E502', 'range': {'start': {'line': 439, 'character': 53}, 'end': {'line': 439, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four', 'code': 'E111', 'range': {'start': {'line': 415, 'character': 22}, 'end': {'line': 415, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'line': 415, 'character': 22}, 'end': {'line': 415, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 415, 'character': 27}, 'end': {'line': 415, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 419, 'character': 52}, 'end': {'line': 419, 'character': 58}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 422, 'character': 52}, 'end': {'line': 422, 'character': 58}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 425, 'character': 55}, 'end': {'line': 425, 'character': 61}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 451, 'character': 46}, 'end': {'line': 451, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 434, 'character': 41}, 'end': {'line': 434, 'character': 71}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 434, 'character': 43}, 'end': {'line': 434, 'character': 71}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 435, 'character': 29}, 'end': {'line': 435, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 435, 'character': 31}, 'end': {'line': 435, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 436, 'character': 31}, 'end': {'line': 436, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 436, 'character': 33}, 'end': {'line': 436, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 441, 'character': 33}, 'end': {'line': 441, 'character': 42}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 441, 'character': 35}, 'end': {'line': 441, 'character': 42}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 451, 'character': 22}, 'end': {'line': 451, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 451, 'character': 24}, 'end': {'line': 451, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 453, 'character': 4}, 'end': {'line': 453, 'character': 40}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four', 'code': 'E111', 'range': {'start': {'line': 452, 'character': 38}, 'end': {'line': 452, 'character': 65}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'line': 452, 'character': 38}, 'end': {'line': 452, 'character': 65}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 452, 'character': 58}, 'end': {'line': 452, 'character': 65}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'line': 454, 'character': 17}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:49:50,740 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pyflakes', 'message': 'invalid syntax', 'range': {'start': {'line': 413, 'character': 33}, 'end': {'line': 413, 'character': 67}}, 'severity': 1}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 413, 'character': 16}, 'end': {'line': 413, 'character': 34}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 414, 'character': 12}, 'end': {'line': 414, 'character': 33}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 412, 'character': 17}, 'end': {'line': 412, 'character': 63}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 416, 'character': 12}, 'end': {'line': 416, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 418, 'character': 8}, 'end': {'line': 418, 'character': 26}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 421, 'character': 8}, 'end': {'line': 421, 'character': 29}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 424, 'character': 8}, 'end': {'line': 424, 'character': 33}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 427, 'character': 8}, 'end': {'line': 427, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 430, 'character': 8}, 'end': {'line': 430, 'character': 44}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 433, 'character': 8}, 'end': {'line': 433, 'character': 46}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 438, 'character': 8}, 'end': {'line': 438, 'character': 32}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 440, 'character': 16}, 'end': {'line': 440, 'character': 42}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 443, 'character': 4}, 'end': {'line': 443, 'character': 35}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 27}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E502 the backslash is redundant between brackets', 'code': 'E502', 'range': {'start': {'line': 439, 'character': 53}, 'end': {'line': 439, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four', 'code': 'E111', 'range': {'start': {'line': 415, 'character': 22}, 'end': {'line': 415, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'line': 415, 'character': 22}, 'end': {'line': 415, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 415, 'character': 27}, 'end': {'line': 415, 'character': 55}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 419, 'character': 52}, 'end': {'line': 419, 'character': 58}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 422, 'character': 52}, 'end': {'line': 422, 'character': 58}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 425, 'character': 55}, 'end': {'line': 425, 'character': 61}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 451, 'character': 46}, 'end': {'line': 451, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 434, 'character': 41}, 'end': {'line': 434, 'character': 71}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 434, 'character': 43}, 'end': {'line': 434, 'character': 71}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 435, 'character': 29}, 'end': {'line': 435, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 435, 'character': 31}, 'end': {'line': 435, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 436, 'character': 31}, 'end': {'line': 436, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 436, 'character': 33}, 'end': {'line': 436, 'character': 37}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 441, 'character': 33}, 'end': {'line': 441, 'character': 42}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 441, 'character': 35}, 'end': {'line': 441, 'character': 42}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 451, 'character': 22}, 'end': {'line': 451, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E251 unexpected spaces around keyword / parameter equals', 'code': 'E251', 'range': {'start': {'line': 451, 'character': 24}, 'end': {'line': 451, 'character': 56}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'line': 453, 'character': 4}, 'end': {'line': 453, 'character': 40}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E111 indentation is not a multiple of four', 'code': 'E111', 'range': {'start': {'line': 452, 'character': 38}, 'end': {'line': 452, 'character': 65}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'line': 452, 'character': 38}, 'end': {'line': 452, 'character': 65}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'line': 452, 'character': 58}, 'end': {'line': 452, 'character': 65}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'line': 454, 'character': 17}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:50:00,681 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-19 00:50:01,182 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:50:01,242 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}] 2018-02-19 00:50:01,242 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:01,242 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:50:01,242 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:50:01,242 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:01,242 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:01,243 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:01,243 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:50:01,243 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:01,243 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:50:01,259 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:01,259 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:50:01,259 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:50:01,259 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:01,260 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:01,260 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:01,260 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:50:01,260 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:01,260 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:50:01,356 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 412, 'character': 16}, 'end': {'line': 412, 'character': 34}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 453, 'character': 55}, 'end': {'line': 453, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:50:01,357 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 412, 'character': 16}, 'end': {'line': 412, 'character': 34}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 453, 'character': 55}, 'end': {'line': 453, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:50:18,792 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-19 00:50:18,793 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-19 00:50:19,294 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:50:19,354 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}] 2018-02-19 00:50:19,354 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:19,355 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:50:19,373 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:50:19,374 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:50:19,374 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:50:19,450 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 453, 'character': 55}, 'end': {'line': 453, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:50:19,450 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 453, 'character': 55}, 'end': {'line': 453, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:51:25,111 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-19 00:51:25,112 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-19 00:51:25,612 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:51:25,671 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}] 2018-02-19 00:51:25,672 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:25,672 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:51:25,672 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:51:25,672 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:25,672 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:25,673 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:25,673 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:51:25,673 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:25,673 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:51:25,690 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:25,690 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:51:25,690 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:51:25,690 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:25,691 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:25,691 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:25,691 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:51:25,691 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:25,691 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:51:25,782 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 92, 'character': 79}, 'end': {'line': 92, 'character': 85}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 453, 'character': 55}, 'end': {'line': 453, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:51:25,782 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 95, 'character': 0}, 'end': {'line': 95, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 101, 'character': 0}, 'end': {'line': 101, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 144, 'character': 0}, 'end': {'line': 144, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 148, 'character': 0}, 'end': {'line': 148, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 157, 'character': 0}, 'end': {'line': 157, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 165, 'character': 0}, 'end': {'line': 165, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 188, 'character': 0}, 'end': {'line': 188, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 408, 'character': 0}, 'end': {'line': 408, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 442, 'character': 0}, 'end': {'line': 442, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 256, 'character': 4}, 'end': {'line': 256, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (84 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 92, 'character': 79}, 'end': {'line': 92, 'character': 85}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 263, 'character': 79}, 'end': {'line': 263, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 453, 'character': 55}, 'end': {'line': 453, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:51:34,786 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-19 00:51:35,288 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:51:35,343 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:35,344 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:51:35,360 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:35,360 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:35,361 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:51:35,431 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:51:35,431 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:51:35,538 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = self.refKniha + \'.\' + N\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-19 00:51:35,539 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-19 00:51:36,039 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:51:36,098 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:36,099 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:51:36,100 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:36,100 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:51:36,118 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:51:36,119 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:51:36,194 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:51:36,194 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:52:09,863 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":19}}}' 2018-02-19 00:52:10,364 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:52:10,421 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:52:10,421 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:10,421 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:10,421 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:10,421 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:10,421 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:10,422 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:10,422 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:10,422 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:10,422 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:52:10,438 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:10,439 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:52:10,511 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:52:10,511 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:52:10,691 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-19 00:52:10,692 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-19 00:52:11,192 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:52:11,251 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:11,252 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:11,253 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:52:11,270 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:11,270 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:11,270 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:11,270 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:11,270 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:11,271 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:11,271 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:11,271 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:11,271 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:52:11,348 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:52:11,348 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:52:24,330 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = attrs[\'n\']\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-19 00:52:24,331 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-19 00:52:24,832 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:52:24,907 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:52:24,907 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:24,907 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:24,907 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:24,908 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:24,908 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:24,908 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:24,908 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:24,908 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:24,908 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:52:24,928 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:24,928 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:24,928 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:24,928 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:24,929 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:24,929 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:24,929 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:24,929 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:24,929 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:52:25,017 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:52:25,017 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:52:55,909 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-19 00:52:56,411 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:52:56,465 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:56,466 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:52:56,482 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:52:56,553 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:52:56,554 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:53:10,370 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, attrs[\'n\'])\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":23}}}' 2018-02-19 00:53:10,872 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:53:10,965 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:53:10,965 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:10,965 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:10,965 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:10,965 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:10,965 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:10,966 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:10,966 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:10,966 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:10,966 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:53:10,981 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:10,982 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:53:11,054 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:53:11,054 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:53:18,116 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-19 00:53:18,618 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:53:18,673 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:53:18,673 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:18,673 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:18,673 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:18,673 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:18,673 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:18,674 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:18,674 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:18,674 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:18,674 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:18,689 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:18,690 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:18,690 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:53:18,773 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:53:18,773 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:53:18,957 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if attrs[\'n\'] != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-19 00:53:18,959 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-19 00:53:19,460 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:53:19,519 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:19,520 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:19,521 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:19,521 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:53:19,537 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:19,538 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:53:19,615 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:53:19,615 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:53:32,161 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-19 00:53:32,663 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:53:32,720 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:53:32,721 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:32,721 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:32,721 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:32,721 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:32,721 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:32,722 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:32,722 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:32,722 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:32,722 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:53:32,741 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:32,741 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:32,741 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:32,741 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:32,742 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:32,742 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:32,742 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:32,742 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:32,742 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:53:32,827 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:53:32,827 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:53:40,706 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":27}}}' 2018-02-19 00:53:40,709 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":27}}}' 2018-02-19 00:53:41,210 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:53:41,269 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:41,270 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:41,288 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:41,289 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:41,289 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:53:41,366 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:53:41,366 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:53:44,303 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-19 00:53:44,304 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-19 00:53:44,805 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:53:44,942 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}] 2018-02-19 00:53:44,943 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:44,943 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:44,943 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:44,943 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:44,943 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:44,944 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:44,947 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:44,947 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:44,947 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:53:44,975 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:44,975 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:53:44,976 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:53:44,976 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:44,976 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:44,976 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:53:44,976 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:53:44,977 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:53:44,977 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:53:45,065 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:53:45,066 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 204, 'character': 0}, 'end': {'line': 204, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 224, 'character': 0}, 'end': {'line': 224, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 253, 'character': 0}, 'end': {'line': 253, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 409, 'character': 0}, 'end': {'line': 409, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 443, 'character': 0}, 'end': {'line': 443, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 257, 'character': 4}, 'end': {'line': 257, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 206, 'character': 79}, 'end': {'line': 206, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 240, 'character': 79}, 'end': {'line': 240, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 264, 'character': 79}, 'end': {'line': 264, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 454, 'character': 55}, 'end': {'line': 454, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:54:10,780 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":29}}}' 2018-02-19 00:54:11,281 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:54:11,285 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 00:54:11,285 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:11,285 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:54:11,285 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:54:11,286 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:11,286 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:11,286 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:11,286 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:54:11,286 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:11,286 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:54:11,287 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:11,287 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:54:11,287 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:54:11,288 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:11,288 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:11,288 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:11,288 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:54:11,288 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:11,288 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:54:11,359 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pyflakes', 'message': 'expected an indented block', 'range': {'start': {'line': 199, 'character': 20}, 'end': {'line': 199, 'character': 70}}, 'severity': 1}], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E112 expected an indented block', 'code': 'E112', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 50}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 241, 'character': 79}, 'end': {'line': 241, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 265, 'character': 79}, 'end': {'line': 265, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 455, 'character': 55}, 'end': {'line': 455, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:54:11,359 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pyflakes', 'message': 'expected an indented block', 'range': {'start': {'line': 199, 'character': 20}, 'end': {'line': 199, 'character': 70}}, 'severity': 1}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E112 expected an indented block', 'code': 'E112', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 50}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 241, 'character': 79}, 'end': {'line': 241, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 265, 'character': 79}, 'end': {'line': 265, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 455, 'character': 55}, 'end': {'line': 455, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:54:31,029 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = {}, attrs = {}\', name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":30}}}' 2018-02-19 00:54:31,530 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:54:31,584 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 00:54:31,584 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:31,584 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:54:31,584 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:54:31,585 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:31,585 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:31,585 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:31,585 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:54:31,585 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:31,585 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:54:31,600 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:31,600 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:54:31,600 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:54:31,601 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:31,601 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:31,601 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:31,601 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:54:31,601 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:31,601 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:54:31,673 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:54:31,673 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:54:34,240 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = {}, attrs = {}\', name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":31}}}' 2018-02-19 00:54:34,241 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":31}}}' 2018-02-19 00:54:34,742 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:54:34,854 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 00:54:34,855 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:34,855 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:54:34,855 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:54:34,856 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:34,856 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:34,856 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:34,857 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:54:34,857 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:34,857 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:54:34,900 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:34,901 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:54:34,901 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:54:34,901 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:34,901 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:34,902 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:54:34,902 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:54:34,904 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:54:34,904 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:54:35,043 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:54:35,043 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:55:18,189 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":32}}}' 2018-02-19 00:55:18,690 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:55:18,756 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 00:55:18,756 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:18,756 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:18,757 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:55:18,778 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:18,778 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:18,778 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:18,778 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:18,778 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:18,779 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:18,779 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:18,779 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:18,779 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:55:18,862 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:55:18,862 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:55:19,009 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-19 00:55:19,010 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":33}}}' 2018-02-19 00:55:19,511 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:55:19,570 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 00:55:19,571 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:19,571 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:19,571 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:19,571 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:19,571 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:19,571 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:19,572 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:19,572 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:19,572 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:55:19,616 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:19,616 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:19,616 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:19,617 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:19,617 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:19,617 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:19,617 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:19,617 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:19,617 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:55:19,700 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:55:19,701 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:55:52,234 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":34}}}' 2018-02-19 00:55:52,736 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:55:52,806 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:55:52,806 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:52,807 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:55:52,826 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:52,826 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:52,827 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:55:52,911 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:55:52,911 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:55:52,957 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': self.lastChapter})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":35}}}' 2018-02-19 00:55:52,958 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":35}}}' 2018-02-19 00:55:53,459 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:55:53,549 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:55:53,550 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:53,550 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:53,551 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:53,551 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:53,552 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:53,553 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:53,553 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:53,553 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:53,553 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:55:53,580 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:53,580 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:55:53,581 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:55:53,581 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:53,581 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:53,582 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:55:53,582 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:55:53,583 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:55:53,583 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:55:53,678 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:55:53,678 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:56:24,077 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":36}}}' 2018-02-19 00:56:24,579 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:56:24,634 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:24,635 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:56:24,652 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:24,652 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:24,652 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:24,652 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:24,652 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:24,652 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:24,653 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:24,653 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:24,653 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:56:24,731 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 419, 'character': 20}, 'end': {'line': 419, 'character': 68}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:56:24,731 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 419, 'character': 20}, 'end': {'line': 419, 'character': 68}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:56:24,854 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-19 00:56:24,861 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":37}}}' 2018-02-19 00:56:25,362 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:56:25,472 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:56:25,473 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:25,473 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:25,473 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:25,473 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:25,473 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:25,474 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:25,474 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:25,474 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:25,474 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:56:25,504 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:25,505 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:25,505 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:25,505 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:25,505 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:25,505 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:25,506 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:25,506 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:25,506 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:56:25,645 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 419, 'character': 20}, 'end': {'line': 419, 'character': 68}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:56:25,645 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E128 continuation line under-indented for visual indent', 'code': 'E128', 'range': {'start': {'line': 419, 'character': 20}, 'end': {'line': 419, 'character': 68}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:56:28,728 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":38}}}' 2018-02-19 00:56:28,730 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":38}}}' 2018-02-19 00:56:29,231 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:56:29,290 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:29,291 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:29,292 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:56:29,309 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:29,309 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:29,309 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:29,309 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:29,310 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:29,310 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:29,310 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:29,310 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:29,310 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:56:29,388 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:56:29,389 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:56:35,806 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-19 00:56:35,807 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":39}}}' 2018-02-19 00:56:36,308 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:56:36,368 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:56:36,368 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:36,368 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:36,368 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:36,368 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:36,369 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:36,369 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:36,369 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:36,369 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:36,369 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:56:36,387 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:56:36,388 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:56:36,467 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:56:36,468 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 00:58:47,014 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'bookGroup\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":40}}}' 2018-02-19 00:58:47,015 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":40}}}' 2018-02-19 00:58:47,515 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 00:58:47,625 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 00:58:47,626 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:58:47,626 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:58:47,626 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:58:47,626 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:58:47,626 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:58:47,627 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:58:47,627 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:58:47,627 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:58:47,627 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 00:58:47,665 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:58:47,665 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 00:58:47,665 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 00:58:47,665 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:58:47,665 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:58:47,666 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 00:58:47,666 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 00:58:47,666 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 00:58:47,666 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 00:58:47,831 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 00:58:47,831 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:10:53,696 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":41}}}' 2018-02-19 01:10:54,203 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:10:54,272 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 01:10:54,273 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:54,273 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:10:54,273 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:10:54,273 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:54,273 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:54,274 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:54,274 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:10:54,274 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:54,274 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:10:54,291 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:54,291 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:10:54,291 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:10:54,292 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:54,292 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:54,292 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:54,292 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:10:54,292 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:54,292 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:10:54,365 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:10:54,365 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:10:54,480 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'bookGroup\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":42}}}' 2018-02-19 01:10:54,483 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":42}}}' 2018-02-19 01:10:54,983 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:10:55,111 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 01:10:55,112 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:55,112 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:10:55,113 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:10:55,113 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:55,113 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:55,113 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:55,113 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:10:55,114 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:55,114 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:10:55,148 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:55,148 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:10:55,148 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:10:55,149 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:55,149 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:55,149 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:10:55,149 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:10:55,150 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:10:55,150 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:10:55,309 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:10:55,309 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:11:06,992 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":43}}}' 2018-02-19 01:11:07,493 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:11:07,554 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 01:11:07,554 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:07,555 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:11:07,616 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:07,616 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:11:07,616 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:11:07,616 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:07,616 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:07,617 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:07,617 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:11:07,617 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:07,617 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:11:07,692 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:11:07,692 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:11:07,761 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":44}}}' 2018-02-19 01:11:07,762 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":44}}}' 2018-02-19 01:11:08,262 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:11:08,323 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 01:11:08,324 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:08,324 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:11:08,324 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:11:08,324 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:08,324 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:08,324 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:08,325 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:11:08,325 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:08,325 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:11:08,342 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:08,342 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:11:08,342 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:11:08,342 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:08,342 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:08,342 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:11:08,343 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:11:08,343 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:11:08,343 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:11:08,430 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:11:08,430 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:12:51,156 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n # if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":45}}}' 2018-02-19 01:12:51,657 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:51,662 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:12:51,663 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:51,663 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:12:51,664 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:51,664 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:12:51,664 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:12:51,665 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:51,665 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:51,665 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:51,665 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:12:51,665 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:51,665 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:12:51,688 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pyflakes', 'message': 'unindent does not match any outer indentation level', 'range': {'start': {'line': 155, 'character': 29}, 'end': {'line': 155, 'character': 58}}, 'severity': 1}], [{'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'line': 155, 'character': 8}, 'end': {'line': 155, 'character': 29}}, 'severity': 2}]] [hook] 2018-02-19 01:12:51,689 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pyflakes', 'message': 'unindent does not match any outer indentation level', 'range': {'start': {'line': 155, 'character': 29}, 'end': {'line': 155, 'character': 58}}, 'severity': 1}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'line': 155, 'character': 8}, 'end': {'line': 155, 'character': 29}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:12:54,309 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n # if name in (\'ot\', \'nt\'):\\n # self.curr_test = name\\n # self.ds.startElement(\'div\',\\n # {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n # self.elem(\'title\', TESTAMENTS[name])\\n if name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-19 01:12:54,311 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":46}}}' 2018-02-19 01:12:54,815 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:12:54,936 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}] 2018-02-19 01:12:54,937 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:54,937 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:12:54,937 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:12:54,937 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:54,938 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:54,938 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:54,938 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:12:54,938 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:54,938 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:12:54,971 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:54,972 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:12:54,972 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:12:54,972 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:54,972 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:54,972 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:12:54,973 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:12:54,973 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:12:54,973 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:12:55,130 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 259, 'character': 4}, 'end': {'line': 259, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 198, 'character': 16}, 'end': {'line': 198, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 266, 'character': 79}, 'end': {'line': 266, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 456, 'character': 55}, 'end': {'line': 456, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:12:55,131 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 259, 'character': 4}, 'end': {'line': 259, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 198, 'character': 16}, 'end': {'line': 198, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 266, 'character': 79}, 'end': {'line': 266, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 456, 'character': 55}, 'end': {'line': 456, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:13:14,358 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-19 01:13:14,360 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":47}}}' 2018-02-19 01:13:14,861 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:13:14,992 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}] 2018-02-19 01:13:14,993 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:13:14,993 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:13:14,994 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:13:14,994 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:13:14,994 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:13:14,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:13:14,994 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:13:14,995 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:13:14,995 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:13:15,030 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:13:15,030 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:13:15,030 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:13:15,030 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:13:15,030 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:13:15,031 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:13:15,031 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:13:15,031 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:13:15,031 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:13:15,197 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 259, 'character': 4}, 'end': {'line': 259, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 198, 'character': 16}, 'end': {'line': 198, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 266, 'character': 79}, 'end': {'line': 266, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 456, 'character': 55}, 'end': {'line': 456, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:13:15,198 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 259, 'character': 4}, 'end': {'line': 259, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 198, 'character': 16}, 'end': {'line': 198, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 266, 'character': 79}, 'end': {'line': 266, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 456, 'character': 55}, 'end': {'line': 456, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:14:39,777 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/definition","jsonrpc":"2.0","id":2,"params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py"},"position":{"character":23,"line":262}}}' 2018-02-19 01:14:39,778 UTC - DEBUG - pyls.config.config - pyls_definitions [hook] position: {'line': 262, 'character': 23} config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:14:39,941 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/__init__.py 2018-02-19 01:14:39,944 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/sax/__init__.py 2018-02-19 01:14:39,953 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/sax/saxutils.py 2018-02-19 01:14:39,966 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/sax/xmlreader.py 2018-02-19 01:14:40,000 UTC - DEBUG - pyls.config.config - finish pyls_definitions --> [[{'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'range': {'start': {'line': 187, 'character': 8}, 'end': {'line': 187, 'character': 20}}}]] [hook] 2018-02-19 01:15:03,112 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":48}}}' 2018-02-19 01:15:03,613 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:15:03,677 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:15:03,677 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:03,677 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:03,678 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:03,696 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:03,697 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:03,697 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:15:03,801 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:15:03,802 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:15:03,855 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, content=\'\', name=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":49}}}' 2018-02-19 01:15:03,859 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":49}}}' 2018-02-19 01:15:04,364 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:15:04,486 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:15:04,487 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:04,487 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:04,488 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:04,488 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:04,488 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:04,488 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:04,488 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:04,489 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:04,489 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:15:04,524 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:04,524 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:04,524 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:04,524 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:04,525 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:04,525 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:04,525 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:04,525 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:04,525 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:15:04,679 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:15:04,679 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:15:31,511 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, \'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-19 01:15:31,512 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":50}}}' 2018-02-19 01:15:32,012 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:15:32,072 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:15:32,072 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:32,072 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:32,072 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:32,073 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:32,073 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:32,073 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:32,073 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:32,073 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:32,073 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:15:32,091 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:32,091 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:32,091 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:32,091 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:32,092 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:32,092 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:32,092 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:32,092 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:32,092 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:15:32,174 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:15:32,175 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:15:56,014 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, \'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":51}}}' 2018-02-19 01:15:56,516 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:15:56,571 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:15:56,572 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:56,572 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:56,572 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:56,572 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:56,572 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:56,573 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:56,573 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:56,573 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:56,573 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:15:56,592 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:15:56,668 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:15:56,668 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:16:14,179 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":52}}}' 2018-02-19 01:16:14,681 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:16:14,738 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:16:14,738 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:14,738 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:14,738 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:14,739 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:14,739 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:14,739 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:14,739 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:14,739 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:14,739 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:14,788 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:16:14,860 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:16:14,860 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:16:16,251 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, \'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":53}}}' 2018-02-19 01:16:16,253 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":53}}}' 2018-02-19 01:16:16,754 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:16:16,888 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:16:16,889 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:16,889 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:16,889 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:16,890 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:16,890 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:16,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:16,890 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:16,890 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:16,891 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:16:16,927 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:16,927 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:16,928 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:16,928 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:16,928 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:16,928 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:16,929 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:16,929 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:16,929 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:16:17,095 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:16:17,096 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:16:19,258 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":54}}}' 2018-02-19 01:16:19,760 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:16:19,818 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:19,819 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:19,820 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:16:19,837 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:19,837 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:19,837 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:19,837 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:19,837 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:19,838 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:19,838 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:19,838 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:19,838 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:16:19,915 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:16:19,916 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:16:26,802 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n log.debug(\'self.current_note = %s\', self.current_note)\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":55}}}' 2018-02-19 01:16:26,804 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":55}}}' 2018-02-19 01:16:27,305 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:16:27,444 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}] 2018-02-19 01:16:27,445 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:27,445 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:27,446 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:27,446 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:27,446 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:27,446 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:27,446 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:27,447 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:27,447 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:16:27,484 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:27,484 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:27,484 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:27,485 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:27,485 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:27,485 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:27,485 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:27,486 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:27,486 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:16:27,657 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:16:27,658 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 207, 'character': 0}, 'end': {'line': 207, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 213, 'character': 0}, 'end': {'line': 213, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 219, 'character': 0}, 'end': {'line': 219, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 227, 'character': 0}, 'end': {'line': 227, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 233, 'character': 0}, 'end': {'line': 233, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 412, 'character': 0}, 'end': {'line': 412, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 199, 'character': 16}, 'end': {'line': 199, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 209, 'character': 79}, 'end': {'line': 209, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:16:40,002 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":56}}}' 2018-02-19 01:16:40,004 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":56}}}' 2018-02-19 01:16:40,506 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:16:40,645 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}] 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:40,646 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:40,647 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:16:40,664 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:40,664 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:16:40,664 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:16:40,665 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:40,665 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:40,665 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:16:40,665 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:16:40,665 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:16:40,665 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:16:40,752 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 259, 'character': 4}, 'end': {'line': 259, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 198, 'character': 16}, 'end': {'line': 198, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 266, 'character': 79}, 'end': {'line': 266, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 456, 'character': 55}, 'end': {'line': 456, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:16:40,752 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 164, 'character': 0}, 'end': {'line': 164, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 173, 'character': 0}, 'end': {'line': 173, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 187, 'character': 0}, 'end': {'line': 187, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 206, 'character': 0}, 'end': {'line': 206, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 212, 'character': 0}, 'end': {'line': 212, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 218, 'character': 0}, 'end': {'line': 218, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 226, 'character': 0}, 'end': {'line': 226, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 232, 'character': 0}, 'end': {'line': 232, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 255, 'character': 0}, 'end': {'line': 255, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 411, 'character': 0}, 'end': {'line': 411, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 445, 'character': 0}, 'end': {'line': 445, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 259, 'character': 4}, 'end': {'line': 259, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 172, 'character': 0}, 'end': {'line': 172, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 198, 'character': 16}, 'end': {'line': 198, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 208, 'character': 79}, 'end': {'line': 208, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 242, 'character': 79}, 'end': {'line': 242, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 266, 'character': 79}, 'end': {'line': 266, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 456, 'character': 55}, 'end': {'line': 456, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:19:31,417 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":57}}}' 2018-02-19 01:19:31,919 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:19:31,976 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 169, 'character': 0}, 'end': {'line': 169, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 178, 'character': 0}, 'end': {'line': 178, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 192, 'character': 0}, 'end': {'line': 192, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 211, 'character': 0}, 'end': {'line': 211, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 217, 'character': 0}, 'end': {'line': 217, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 237, 'character': 0}, 'end': {'line': 237, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 263, 'character': 0}, 'end': {'line': 263, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 416, 'character': 0}, 'end': {'line': 416, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}] 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:31,977 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:19:31,993 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:31,993 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:31,993 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:31,993 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:31,994 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:31,994 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:31,994 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:31,994 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:31,994 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:19:32,066 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 169, 'character': 0}, 'end': {'line': 169, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 178, 'character': 0}, 'end': {'line': 178, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 192, 'character': 0}, 'end': {'line': 192, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 211, 'character': 0}, 'end': {'line': 211, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 217, 'character': 0}, 'end': {'line': 217, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 237, 'character': 0}, 'end': {'line': 237, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 263, 'character': 0}, 'end': {'line': 263, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 416, 'character': 0}, 'end': {'line': 416, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 264, 'character': 4}, 'end': {'line': 264, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 203, 'character': 16}, 'end': {'line': 203, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 213, 'character': 79}, 'end': {'line': 213, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 215, 'character': 79}, 'end': {'line': 215, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 255, 'character': 79}, 'end': {'line': 255, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 271, 'character': 79}, 'end': {'line': 271, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:19:32,066 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 169, 'character': 0}, 'end': {'line': 169, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 178, 'character': 0}, 'end': {'line': 178, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 192, 'character': 0}, 'end': {'line': 192, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 211, 'character': 0}, 'end': {'line': 211, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 217, 'character': 0}, 'end': {'line': 217, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 231, 'character': 0}, 'end': {'line': 231, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 237, 'character': 0}, 'end': {'line': 237, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 263, 'character': 0}, 'end': {'line': 263, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 416, 'character': 0}, 'end': {'line': 416, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 264, 'character': 4}, 'end': {'line': 264, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 203, 'character': 16}, 'end': {'line': 203, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 213, 'character': 79}, 'end': {'line': 213, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 215, 'character': 79}, 'end': {'line': 215, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 255, 'character': 79}, 'end': {'line': 255, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 271, 'character': 79}, 'end': {'line': 271, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:19:40,657 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":58}}}' 2018-02-19 01:19:41,159 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:19:41,214 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 168, 'character': 0}, 'end': {'line': 168, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 191, 'character': 0}, 'end': {'line': 191, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 222, 'character': 0}, 'end': {'line': 222, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 236, 'character': 0}, 'end': {'line': 236, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 262, 'character': 0}, 'end': {'line': 262, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 415, 'character': 0}, 'end': {'line': 415, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 449, 'character': 0}, 'end': {'line': 449, 'character': 19}}}] 2018-02-19 01:19:41,214 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:41,214 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:41,214 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:41,214 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:41,214 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:41,215 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:41,215 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:41,215 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:41,215 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:19:41,230 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:41,230 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:41,230 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:41,230 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:41,230 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:41,230 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:41,231 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:41,231 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:41,231 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:19:41,301 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 168, 'character': 0}, 'end': {'line': 168, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 191, 'character': 0}, 'end': {'line': 191, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 222, 'character': 0}, 'end': {'line': 222, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 236, 'character': 0}, 'end': {'line': 236, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 262, 'character': 0}, 'end': {'line': 262, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 415, 'character': 0}, 'end': {'line': 415, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 449, 'character': 0}, 'end': {'line': 449, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 263, 'character': 4}, 'end': {'line': 263, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E127 continuation line over-indented for visual indent', 'code': 'E127', 'range': {'start': {'line': 161, 'character': 33}, 'end': {'line': 161, 'character': 77}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 202, 'character': 16}, 'end': {'line': 202, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 214, 'character': 79}, 'end': {'line': 214, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 254, 'character': 79}, 'end': {'line': 254, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 270, 'character': 79}, 'end': {'line': 270, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 460, 'character': 55}, 'end': {'line': 460, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:19:41,301 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 168, 'character': 0}, 'end': {'line': 168, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 177, 'character': 0}, 'end': {'line': 177, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 191, 'character': 0}, 'end': {'line': 191, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 210, 'character': 0}, 'end': {'line': 210, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 216, 'character': 0}, 'end': {'line': 216, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 222, 'character': 0}, 'end': {'line': 222, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 230, 'character': 0}, 'end': {'line': 230, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 236, 'character': 0}, 'end': {'line': 236, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 262, 'character': 0}, 'end': {'line': 262, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 415, 'character': 0}, 'end': {'line': 415, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 449, 'character': 0}, 'end': {'line': 449, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 263, 'character': 4}, 'end': {'line': 263, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E127 continuation line over-indented for visual indent', 'code': 'E127', 'range': {'start': {'line': 161, 'character': 33}, 'end': {'line': 161, 'character': 77}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 202, 'character': 16}, 'end': {'line': 202, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 214, 'character': 79}, 'end': {'line': 214, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 246, 'character': 79}, 'end': {'line': 246, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 251, 'character': 79}, 'end': {'line': 251, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 254, 'character': 79}, 'end': {'line': 254, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 270, 'character': 79}, 'end': {'line': 270, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 460, 'character': 55}, 'end': {'line': 460, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:19:47,589 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":59}}}' 2018-02-19 01:19:47,594 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":59}}}' 2018-02-19 01:19:48,095 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:19:48,155 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 190, 'character': 0}, 'end': {'line': 190, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 221, 'character': 0}, 'end': {'line': 221, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 261, 'character': 0}, 'end': {'line': 261, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}] 2018-02-19 01:19:48,155 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:48,156 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:48,174 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:48,175 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:48,175 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:19:48,254 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 190, 'character': 0}, 'end': {'line': 190, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 221, 'character': 0}, 'end': {'line': 221, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 261, 'character': 0}, 'end': {'line': 261, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 262, 'character': 4}, 'end': {'line': 262, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 201, 'character': 16}, 'end': {'line': 201, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 213, 'character': 79}, 'end': {'line': 213, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 253, 'character': 79}, 'end': {'line': 253, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 269, 'character': 79}, 'end': {'line': 269, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:19:48,255 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 167, 'character': 0}, 'end': {'line': 167, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 176, 'character': 0}, 'end': {'line': 176, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 190, 'character': 0}, 'end': {'line': 190, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 221, 'character': 0}, 'end': {'line': 221, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 235, 'character': 0}, 'end': {'line': 235, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 258, 'character': 0}, 'end': {'line': 258, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 261, 'character': 0}, 'end': {'line': 261, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 262, 'character': 4}, 'end': {'line': 262, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 201, 'character': 16}, 'end': {'line': 201, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 211, 'character': 79}, 'end': {'line': 211, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 213, 'character': 79}, 'end': {'line': 213, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 245, 'character': 79}, 'end': {'line': 245, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 250, 'character': 79}, 'end': {'line': 250, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 253, 'character': 79}, 'end': {'line': 253, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 269, 'character': 79}, 'end': {'line': 269, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:19:51,612 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":60}}}' 2018-02-19 01:19:51,614 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":60}}}' 2018-02-19 01:19:52,115 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:19:52,239 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 01:19:52,240 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:52,241 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:52,241 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:52,241 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:52,242 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:52,242 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:52,242 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:52,242 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:52,242 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:19:52,279 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:52,279 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:19:52,279 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:19:52,279 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:52,280 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:52,280 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:19:52,280 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:19:52,281 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:19:52,281 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:19:52,452 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:19:52,453 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:21:59,700 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n self.create_event(EType.endElement, \'note\')\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":61}}}' 2018-02-19 01:22:00,201 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:22:00,266 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}] 2018-02-19 01:22:00,267 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:00,267 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:22:00,267 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:22:00,267 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:00,268 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:00,268 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:00,268 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:22:00,268 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:00,268 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:22:00,285 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:00,286 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:22:00,366 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:22:00,367 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:22:00,481 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n self.create_event(EType.endElement, \'note\')\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":62}}}' 2018-02-19 01:22:00,484 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":62}}}' 2018-02-19 01:22:00,985 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:22:01,120 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}] 2018-02-19 01:22:01,121 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:01,121 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:22:01,122 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:22:01,122 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:01,122 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:01,122 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:01,122 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:22:01,123 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:01,123 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:22:01,221 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:01,222 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:22:01,222 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:22:01,222 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:01,222 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:01,223 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:22:01,223 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:22:01,223 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:22:01,223 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:22:01,392 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:22:01,392 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:24:09,018 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":63}}}' 2018-02-19 01:24:09,020 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":63}}}' 2018-02-19 01:24:09,520 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:24:09,640 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}] 2018-02-19 01:24:09,642 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:24:09,642 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:24:09,642 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:24:09,642 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:24:09,643 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:24:09,643 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:24:09,643 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:24:09,643 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:24:09,644 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:24:09,662 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:24:09,663 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:24:09,795 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:24:09,795 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 413, 'character': 0}, 'end': {'line': 413, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 447, 'character': 0}, 'end': {'line': 447, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 458, 'character': 55}, 'end': {'line': 458, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:25:51,824 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.end)\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":64}}}' 2018-02-19 01:25:51,826 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/completion","jsonrpc":"2.0","id":3,"params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py"},"position":{"character":39,"line":412}}}' 2018-02-19 01:25:51,826 UTC - DEBUG - pyls.config.config - pyls_completions [hook] position: {'line': 412, 'character': 39} config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:25:51,940 UTC - DEBUG - parso.python.diff - diff parser start 2018-02-19 01:25:51,942 UTC - DEBUG - parso.python.diff - diff parser calculated 2018-02-19 01:25:51,942 UTC - DEBUG - parso.python.diff - diff: line_lengths old: 457, new: 460 2018-02-19 01:25:51,942 UTC - DEBUG - parso.python.diff - diff equal old[1:159] new[1:159] 2018-02-19 01:25:51,942 UTC - DEBUG - parso.python.diff - diff actually copy 1 to 157 2018-02-19 01:25:51,946 UTC - DEBUG - parso.python.diff - parse_part from 158 to 171 (to 171 in part parser) 2018-02-19 01:25:51,946 UTC - DEBUG - parso.python.diff - diff replace old[160:160] new[160:162] 2018-02-19 01:25:51,946 UTC - DEBUG - parso.python.diff - diff equal old[161:187] new[163:189] 2018-02-19 01:25:51,947 UTC - DEBUG - parso.python.diff - parse_part from 170 to 172 (to 172 in part parser) 2018-02-19 01:25:51,947 UTC - DEBUG - parso.python.diff - diff actually copy 173 to 188 2018-02-19 01:25:51,955 UTC - DEBUG - parso.python.diff - parse_part from 189 to 224 (to 224 in part parser) 2018-02-19 01:25:51,956 UTC - DEBUG - parso.python.diff - diff replace old[188:188] new[190:190] 2018-02-19 01:25:51,956 UTC - DEBUG - parso.python.diff - diff equal old[189:262] new[191:264] 2018-02-19 01:25:51,956 UTC - DEBUG - parso.python.diff - diff actually copy 225 to 227 2018-02-19 01:25:51,956 UTC - DEBUG - parso.python.diff - diff actually copy 230 to 259 2018-02-19 01:25:51,989 UTC - DEBUG - parso.python.diff - parse_part from 260 to 455 (to 455 in part parser) 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff replace old[263:263] new[265:265] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff equal old[264:402] new[266:404] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff replace old[403:403] new[405:405] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff equal old[404:410] new[406:412] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff insert old[411:410] new[413:413] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff equal old[411:418] new[414:421] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff replace old[419:419] new[422:422] 2018-02-19 01:25:51,990 UTC - DEBUG - parso.python.diff - diff equal old[420:457] new[423:460] 2018-02-19 01:25:51,992 UTC - DEBUG - parso.python.diff - parse_part from 454 to 460 (to 459 in part parser) 2018-02-19 01:25:51,992 UTC - DEBUG - parso.python.diff - diff parser end 2018-02-19 01:25:52,095 UTC - DEBUG - pyls.config.config - finish pyls_completions --> [[{'detail': 'builtin endswith', 'sortText': 'yendswith', 'label': 'endswith', 'kind': 3, 'documentation': 'S.endswith(suffix[, start[, end]]) -> bool\n\nReturn True if S ends with the specified suffix, False otherwise.\nWith optional start, test S beginning at that position.\nWith optional end, stop comparing S at that position.\nsuffix can also be a tuple of strings to try.'}]] [hook] 2018-02-19 01:25:52,326 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:25:52,381 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}] 2018-02-19 01:25:52,381 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:52,381 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:25:52,381 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:25:52,381 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:52,381 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:52,382 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:52,382 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:25:52,382 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:52,382 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:25:52,397 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:52,398 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:25:52,470 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:25:52,470 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:25:58,532 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":65}}}' 2018-02-19 01:25:59,034 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:25:59,099 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}] 2018-02-19 01:25:59,099 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,099 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,099 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:25:59,099 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,099 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,100 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,100 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,100 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,100 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:25:59,118 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,118 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,118 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:25:59,118 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,118 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,119 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,119 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,119 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,119 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:25:59,214 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:25:59,214 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:25:59,275 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":66}}}' 2018-02-19 01:25:59,277 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":66}}}' 2018-02-19 01:25:59,779 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:25:59,909 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}] 2018-02-19 01:25:59,910 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,910 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,911 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:25:59,911 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,911 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,911 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,911 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,912 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,912 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:25:59,946 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,947 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,947 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:25:59,947 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,947 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,948 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:25:59,948 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:25:59,948 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:25:59,948 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:26:00,117 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:26:00,117 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 448, 'character': 0}, 'end': {'line': 448, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 459, 'character': 55}, 'end': {'line': 459, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:27:57,754 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n if self.lastChapter > 0:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":67}}}' 2018-02-19 01:27:58,256 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:27:58,260 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 01:27:58,260 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:27:58,261 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:27:58,263 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:27:58,263 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:27:58,263 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:27:58,264 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:27:58,264 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:27:58,264 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:27:58,264 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:27:58,264 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:27:58,264 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:27:58,336 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'source': 'pyflakes', 'message': 'expected an indented block', 'range': {'start': {'line': 417, 'character': 16}, 'end': {'line': 417, 'character': 47}}, 'severity': 1}], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E112 expected an indented block', 'code': 'E112', 'range': {'start': {'line': 417, 'character': 12}, 'end': {'line': 417, 'character': 31}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 460, 'character': 55}, 'end': {'line': 460, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:27:58,336 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pyflakes', 'message': 'expected an indented block', 'range': {'start': {'line': 417, 'character': 16}, 'end': {'line': 417, 'character': 47}}, 'severity': 1}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E112 expected an indented block', 'code': 'E112', 'range': {'start': {'line': 417, 'character': 12}, 'end': {'line': 417, 'character': 31}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 460, 'character': 55}, 'end': {'line': 460, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:28:05,380 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n if self.lastChapter > 0:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":68}}}' 2018-02-19 01:28:05,382 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":68}}}' 2018-02-19 01:28:05,882 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:28:06,016 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 449, 'character': 0}, 'end': {'line': 449, 'character': 19}}}] 2018-02-19 01:28:06,017 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:28:06,017 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:28:06,017 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:28:06,018 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:28:06,018 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:28:06,018 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:28:06,018 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:28:06,018 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:28:06,019 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:28:06,054 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:28:06,055 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:28:06,055 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:28:06,055 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:28:06,055 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:28:06,056 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:28:06,056 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:28:06,056 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:28:06,056 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:28:06,224 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 449, 'character': 0}, 'end': {'line': 449, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 460, 'character': 55}, 'end': {'line': 460, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:28:06,224 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 449, 'character': 0}, 'end': {'line': 449, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 460, 'character': 55}, 'end': {'line': 460, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:31:25,197 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":69}}}' 2018-02-19 01:31:25,699 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:31:25,756 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}] 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:25,757 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:31:25,773 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:25,774 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:31:25,851 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:31:25,851 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:31:26,012 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":70}}}' 2018-02-19 01:31:26,014 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":70}}}' 2018-02-19 01:31:26,514 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:31:26,576 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}] 2018-02-19 01:31:26,577 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:26,577 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:31:26,577 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:31:26,577 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:26,577 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:26,578 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:26,578 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:31:26,578 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:26,578 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:31:26,637 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:26,638 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:31:26,720 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:31:26,720 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:31:35,222 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":71}}}' 2018-02-19 01:31:35,223 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":71}}}' 2018-02-19 01:31:35,723 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: 2018-02-19 01:31:35,785 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}] 2018-02-19 01:31:35,785 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:35,785 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:31:35,785 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:31:35,785 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:35,785 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:35,786 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:35,786 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:31:35,786 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:35,786 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:31:35,803 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:31:35,804 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:31:35,885 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}], [], [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}]] [hook] 2018-02-19 01:31:35,885 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'severity': 2, 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 91, 'character': 0}, 'end': {'line': 91, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 96, 'character': 0}, 'end': {'line': 96, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 97, 'character': 0}, 'end': {'line': 97, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 102, 'character': 0}, 'end': {'line': 102, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 149, 'character': 0}, 'end': {'line': 149, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 158, 'character': 0}, 'end': {'line': 158, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 166, 'character': 0}, 'end': {'line': 166, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'severity': 2, 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'severity': 2, 'range': {'start': {'line': 175, 'character': 0}, 'end': {'line': 175, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 189, 'character': 0}, 'end': {'line': 189, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 208, 'character': 0}, 'end': {'line': 208, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 214, 'character': 0}, 'end': {'line': 214, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 220, 'character': 0}, 'end': {'line': 220, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 228, 'character': 0}, 'end': {'line': 228, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 234, 'character': 0}, 'end': {'line': 234, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 257, 'character': 0}, 'end': {'line': 257, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 260, 'character': 0}, 'end': {'line': 260, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'severity': 2, 'range': {'start': {'line': 450, 'character': 0}, 'end': {'line': 450, 'character': 19}}}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)', 'range': {'start': {'line': 261, 'character': 4}, 'end': {'line': 261, 'character': 28}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'line': 174, 'character': 0}, 'end': {'line': 174, 'character': 36}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'line': 200, 'character': 16}, 'end': {'line': 200, 'character': 24}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 210, 'character': 79}, 'end': {'line': 210, 'character': 87}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 212, 'character': 79}, 'end': {'line': 212, 'character': 95}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 248, 'character': 79}, 'end': {'line': 248, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 249, 'character': 79}, 'end': {'line': 249, 'character': 92}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 252, 'character': 79}, 'end': {'line': 252, 'character': 86}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'line': 268, 'character': 79}, 'end': {'line': 268, 'character': 83}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'line': 461, 'character': 55}, 'end': {'line': 461, 'character': 55}}, 'severity': 2}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:32:03,950 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 01:32:03,950 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 01:32:03,951 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'capabilities': {}, 'initializationOptions': {}, 'trace': 'off', 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-19 01:32:04,635 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 01:32:04,635 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 01:32:04,636 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 01:32:04,636 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 01:32:04,636 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 01:32:04,636 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 01:32:04,636 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 01:32:04,637 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 01:32:04,637 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 01:32:04,637 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 01:32:04,637 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 01:32:04,637 UTC - INFO - pyls.config.config - Loaded pyls plugin pyls_mypy from 2018-02-19 01:32:04,637 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 01:32:04,638 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 01:32:04,638 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 01:32:04,638 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 01:32:04,638 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-19 01:32:04,638 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 01:32:04,639 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-19 01:32:04,639 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 01:32:04,639 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-19 01:32:04,639 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 01:32:04,639 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-19 01:32:04,640 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 01:32:04,640 UTC - INFO - pyls.python_ls - Server capabilities: {'executeCommandProvider': {'commands': []}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'referencesProvider': True, 'definitionProvider': True, 'documentFormattingProvider': True, 'experimental': {}, 'textDocumentSync': 2, 'renameProvider': True, 'documentSymbolProvider': True, 'codeActionProvider': True, 'hoverProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'documentRangeFormattingProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}} 2018-02-19 01:32:04,666 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 01:32:04,669 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:32:04,669 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 01:32:05,170 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:32:05,171 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:32:05,171 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:32:05,172 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:32:05,172 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:32:05,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:32:05,175 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:32:05,175 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:32:05,176 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:32:05,341 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:32:05,341 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:32:05,342 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:32:05,484 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 97}, 'end': {'character': 19, 'line': 97}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 19, 'line': 102}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 149}, 'end': {'character': 19, 'line': 149}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 158}, 'end': {'character': 19, 'line': 158}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 166}, 'end': {'character': 19, 'line': 166}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 175}, 'end': {'character': 19, 'line': 175}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 189}, 'end': {'character': 19, 'line': 189}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 214}, 'end': {'character': 19, 'line': 214}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 220}, 'end': {'character': 19, 'line': 220}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 228}, 'end': {'character': 19, 'line': 228}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 234}, 'end': {'character': 19, 'line': 234}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:32:06,940 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 36, 'line': 174}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 200}, 'end': {'character': 24, 'line': 200}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 87, 'line': 210}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 95, 'line': 212}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 86, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 83, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 249}, 'end': {'character': 92, 'line': 249}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 252}, 'end': {'character': 86, 'line': 252}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 97}, 'end': {'character': 19, 'line': 97}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 19, 'line': 102}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 149}, 'end': {'character': 19, 'line': 149}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 158}, 'end': {'character': 19, 'line': 158}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 166}, 'end': {'character': 19, 'line': 166}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 175}, 'end': {'character': 19, 'line': 175}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 189}, 'end': {'character': 19, 'line': 189}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 214}, 'end': {'character': 19, 'line': 214}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 220}, 'end': {'character': 19, 'line': 220}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 228}, 'end': {'character': 19, 'line': 228}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 234}, 'end': {'character': 19, 'line': 234}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:32:06,940 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 36, 'line': 174}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 200}, 'end': {'character': 24, 'line': 200}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 87, 'line': 210}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 95, 'line': 212}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 86, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 83, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 249}, 'end': {'character': 92, 'line': 249}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 252}, 'end': {'character': 86, 'line': 252}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 97}, 'end': {'character': 19, 'line': 97}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 19, 'line': 102}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 149}, 'end': {'character': 19, 'line': 149}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 158}, 'end': {'character': 19, 'line': 158}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 166}, 'end': {'character': 19, 'line': 166}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 175}, 'end': {'character': 19, 'line': 175}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 189}, 'end': {'character': 19, 'line': 189}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 214}, 'end': {'character': 19, 'line': 214}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 220}, 'end': {'character': 19, 'line': 220}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 228}, 'end': {'character': 19, 'line': 228}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 234}, 'end': {'character': 19, 'line': 234}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:33:57,084 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 01:33:57,085 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/definition","jsonrpc":"2.0","id":2,"params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py"},"position":{"character":22,"line":297}}}' 2018-02-19 01:33:57,085 UTC - DEBUG - pyls.config.config - pyls_definitions [hook] position: {'character': 22, 'line': 297} document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:33:57,240 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/__init__.py 2018-02-19 01:33:57,243 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/sax/__init__.py 2018-02-19 01:33:57,262 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/sax/saxutils.py 2018-02-19 01:33:57,271 UTC - DEBUG - parso.cache - pickle loaded: /usr/lib64/python3.4/xml/sax/xmlreader.py 2018-02-19 01:33:57,303 UTC - DEBUG - pyls.config.config - finish pyls_definitions --> [[{'range': {'start': {'character': 8, 'line': 91}, 'end': {'character': 17, 'line': 91}}, 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'}]] [hook] 2018-02-19 01:33:57,585 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:33:57,586 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:33:57,586 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:33:57,586 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:33:57,586 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:33:57,586 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:33:57,587 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:33:57,587 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:33:57,587 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:33:57,587 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:33:57,655 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:33:57,656 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:33:57,723 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 97}, 'end': {'character': 19, 'line': 97}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 19, 'line': 102}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 149}, 'end': {'character': 19, 'line': 149}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 158}, 'end': {'character': 19, 'line': 158}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 166}, 'end': {'character': 19, 'line': 166}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 175}, 'end': {'character': 19, 'line': 175}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 189}, 'end': {'character': 19, 'line': 189}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 214}, 'end': {'character': 19, 'line': 214}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 220}, 'end': {'character': 19, 'line': 220}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 228}, 'end': {'character': 19, 'line': 228}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 234}, 'end': {'character': 19, 'line': 234}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 443}, 'end': {'character': 19, 'line': 443}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:33:59,172 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 36, 'line': 174}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 200}, 'end': {'character': 24, 'line': 200}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 87, 'line': 210}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 95, 'line': 212}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 86, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 83, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 249}, 'end': {'character': 92, 'line': 249}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 252}, 'end': {'character': 86, 'line': 252}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 454}, 'end': {'character': 55, 'line': 454}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 97}, 'end': {'character': 19, 'line': 97}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 19, 'line': 102}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 149}, 'end': {'character': 19, 'line': 149}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 158}, 'end': {'character': 19, 'line': 158}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 166}, 'end': {'character': 19, 'line': 166}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 175}, 'end': {'character': 19, 'line': 175}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 189}, 'end': {'character': 19, 'line': 189}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 214}, 'end': {'character': 19, 'line': 214}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 220}, 'end': {'character': 19, 'line': 220}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 228}, 'end': {'character': 19, 'line': 228}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 234}, 'end': {'character': 19, 'line': 234}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 443}, 'end': {'character': 19, 'line': 443}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:33:59,172 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 36, 'line': 174}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 200}, 'end': {'character': 24, 'line': 200}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 87, 'line': 210}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 95, 'line': 212}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 86, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 83, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 249}, 'end': {'character': 92, 'line': 249}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 252}, 'end': {'character': 86, 'line': 252}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 454}, 'end': {'character': 55, 'line': 454}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 24 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 91}, 'end': {'character': 19, 'line': 91}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 96}, 'end': {'character': 19, 'line': 96}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 97}, 'end': {'character': 19, 'line': 97}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 19, 'line': 102}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 149}, 'end': {'character': 19, 'line': 149}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 158}, 'end': {'character': 19, 'line': 158}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 166}, 'end': {'character': 19, 'line': 166}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 175}, 'end': {'character': 19, 'line': 175}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 189}, 'end': {'character': 19, 'line': 189}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 208}, 'end': {'character': 19, 'line': 208}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 214}, 'end': {'character': 19, 'line': 214}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 220}, 'end': {'character': 19, 'line': 220}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 228}, 'end': {'character': 19, 'line': 228}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 234}, 'end': {'character': 19, 'line': 234}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 443}, 'end': {'character': 19, 'line': 443}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:34:35,731 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 01:34:36,234 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:34:36,234 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:34:36,234 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:34:36,234 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:34:36,234 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:34:36,234 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:34:36,235 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:34:36,235 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:34:36,235 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:34:36,235 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:34:36,307 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:34:36,308 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:34:36,313 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 01:34:36,318 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 281}, 'end': {'character': 28, 'line': 281}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (10)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 287}, 'end': {'character': 34, 'line': 287}}, 'source': 'pycodestyle', 'code': 'E301', 'message': 'E301 expected 1 blank line, found 0'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 36, 'line': 292}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 36, 'line': 292}}, 'source': 'pycodestyle', 'code': 'E113', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 463}, 'end': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 1, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 48, 'line': 292}}, 'source': 'pyflakes', 'message': 'unexpected indent'}], [], [{'severity': 1, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 13, 'line': 292}}, 'source': 'mypy', 'message': 'unexpected indent'}]] [hook] 2018-02-19 01:34:36,318 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 281}, 'end': {'character': 28, 'line': 281}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (10)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 287}, 'end': {'character': 34, 'line': 287}}, 'source': 'pycodestyle', 'code': 'E301', 'message': 'E301 expected 1 blank line, found 0'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 36, 'line': 292}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 36, 'line': 292}}, 'source': 'pycodestyle', 'code': 'E113', 'message': 'E113 unexpected indentation'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 463}, 'end': {'character': 55, 'line': 463}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 1, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 48, 'line': 292}}, 'source': 'pyflakes', 'message': 'unexpected indent'}, {'severity': 1, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 13, 'line': 292}}, 'source': 'mypy', 'message': 'unexpected indent'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:35:04,782 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N != 1:\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 01:35:05,283 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:35:05,284 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:05,284 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:05,284 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:05,284 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:05,284 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:05,284 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:05,285 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:05,285 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:05,285 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:35:05,363 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:05,364 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:35:05,455 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 19, 'line': 426}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:35:06,936 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 295}, 'end': {'character': 89, 'line': 295}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (88 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 466}, 'end': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 19, 'line': 426}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:35:06,936 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 295}, 'end': {'character': 89, 'line': 295}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (88 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 466}, 'end': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 19, 'line': 426}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:35:35,012 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 01:35:35,514 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:35:35,514 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:35,514 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:35,515 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:35:35,586 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:35,586 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:35,587 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:35:35,657 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 19, 'line': 426}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:35:37,050 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 293}, 'end': {'character': 93, 'line': 293}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (92 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 466}, 'end': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 19, 'line': 426}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:35:37,050 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 293}, 'end': {'character': 93, 'line': 293}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (92 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 466}, 'end': {'character': 55, 'line': 466}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 426}, 'end': {'character': 19, 'line': 426}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 455}, 'end': {'character': 19, 'line': 455}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:35:41,396 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 01:35:41,898 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:35:41,898 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:41,898 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:41,898 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:41,898 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:41,899 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:41,899 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:41,899 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:41,899 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:41,899 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:35:41,970 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:41,970 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:41,970 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:41,970 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:41,970 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:41,971 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:41,971 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:41,971 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:41,971 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:35:42,047 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 427}, 'end': {'character': 19, 'line': 427}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:35:42,331 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 294}, 'end': {'character': 84, 'line': 294}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (83 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 467}, 'end': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 427}, 'end': {'character': 19, 'line': 427}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:35:42,332 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 294}, 'end': {'character': 84, 'line': 294}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (83 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 467}, 'end': {'character': 55, 'line': 467}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 427}, 'end': {'character': 19, 'line': 427}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 456}, 'end': {'character': 19, 'line': 456}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:35:46,796 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 01:35:47,298 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:35:47,298 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:47,298 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:47,298 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:47,298 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:47,298 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:47,299 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:47,299 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:47,299 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:47,299 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:35:47,378 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:47,379 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:35:47,457 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 19, 'line': 428}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:35:47,723 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 01:35:47,735 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":8}}}' 2018-02-19 01:35:47,921 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 468}, 'end': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 19, 'line': 428}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:35:47,921 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 468}, 'end': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 19, 'line': 428}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:35:48,237 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:48,238 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:48,239 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:35:48,318 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:48,318 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:35:48,318 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:35:48,318 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:48,319 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:48,319 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:35:48,319 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:35:48,319 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:35:48,319 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:35:48,397 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 19, 'line': 428}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:35:49,011 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 468}, 'end': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 19, 'line': 428}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:35:49,011 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 468}, 'end': {'character': 55, 'line': 468}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 428}, 'end': {'character': 19, 'line': 428}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 457}, 'end': {'character': 19, 'line': 457}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:36:27,285 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.lastBook is not None:\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":9}}}' 2018-02-19 01:36:27,786 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:27,787 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:27,788 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:36:27,861 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:27,861 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:27,861 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:27,862 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:27,862 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:27,862 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:27,862 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:27,862 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:27,862 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:36:27,867 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 01:36:27,872 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 72, 'line': 292}}, 'source': 'pycodestyle', 'code': 'E112', 'message': 'E112 expected an indented block'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 1, 'range': {'start': {'character': 19, 'line': 292}, 'end': {'character': 91, 'line': 292}}, 'source': 'pyflakes', 'message': 'expected an indented block'}], [], [{'severity': 1, 'range': {'start': {'character': 19, 'line': 292}, 'end': {'character': 20, 'line': 292}}, 'source': 'mypy', 'message': 'invalid syntax'}]] [hook] 2018-02-19 01:36:27,872 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 292}, 'end': {'character': 72, 'line': 292}}, 'source': 'pycodestyle', 'code': 'E112', 'message': 'E112 expected an indented block'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 1, 'range': {'start': {'character': 19, 'line': 292}, 'end': {'character': 91, 'line': 292}}, 'source': 'pyflakes', 'message': 'expected an indented block'}, {'severity': 1, 'range': {'start': {'character': 19, 'line': 292}, 'end': {'character': 20, 'line': 292}}, 'source': 'mypy', 'message': 'invalid syntax'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:36:33,736 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = \'\'\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.lastBook is not None:\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-19 01:36:33,739 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":10}}}' 2018-02-19 01:36:34,240 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:36:34,240 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:34,240 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:34,241 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:34,241 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:34,242 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:34,242 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:34,242 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:34,242 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:34,243 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:36:34,412 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:34,412 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:34,413 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:34,413 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:34,413 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:34,414 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:34,414 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:34,414 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:34,414 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:36:34,587 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:36:36,489 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 26 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:36:36,489 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 26 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:36:46,403 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/definition","jsonrpc":"2.0","id":3,"params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py"},"position":{"character":22,"line":291}}}' 2018-02-19 01:36:46,403 UTC - DEBUG - pyls.config.config - pyls_definitions [hook] position: {'character': 22, 'line': 291} document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:36:46,405 UTC - DEBUG - parso.python.diff - diff parser start 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff parser calculated 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff: line_lengths old: 455, new: 470 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff equal old[1:90] new[1:90] 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff actually copy 1 to 90 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff delete old[91:94] new[91:90] 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff equal old[95:276] new[91:272] 2018-02-19 01:36:46,407 UTC - DEBUG - parso.python.diff - diff actually copy 87 to 255 2018-02-19 01:36:46,444 UTC - DEBUG - parso.python.diff - parse_part from 256 to 465 (to 465 in part parser) 2018-02-19 01:36:46,444 UTC - DEBUG - parso.python.diff - diff insert old[277:276] new[273:288] 2018-02-19 01:36:46,444 UTC - DEBUG - parso.python.diff - diff equal old[277:279] new[289:291] 2018-02-19 01:36:46,444 UTC - DEBUG - parso.python.diff - diff replace old[280:284] new[292:299] 2018-02-19 01:36:46,444 UTC - DEBUG - parso.python.diff - diff equal old[285:455] new[300:470] 2018-02-19 01:36:46,446 UTC - DEBUG - parso.python.diff - parse_part from 464 to 470 (to 469 in part parser) 2018-02-19 01:36:46,447 UTC - DEBUG - parso.python.diff - diff parser end 2018-02-19 01:36:46,455 UTC - DEBUG - pyls.config.config - finish pyls_definitions --> [[{'range': {'start': {'character': 13, 'line': 180}, 'end': {'character': 21, 'line': 180}}, 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'}]] [hook] 2018-02-19 01:36:50,292 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.lastBook is not None:\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":11}}}' 2018-02-19 01:36:50,793 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:50,794 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:50,795 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:50,795 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:36:50,876 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:50,876 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:50,876 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:50,876 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:50,876 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:50,877 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:50,877 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:50,877 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:50,877 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:36:50,953 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:36:51,215 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastBook = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n\\n\\n\\n if self.lastChapter > 0:\\n log.debug(\'self.lastChapter = %s\', self.lastChapter)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{:d}.{:d}\'.format(self.lastChapter,\\n self.lastVerse)})\\n self.elem(\'chapter\',\\n attrs={\'eID\': \'{:d}\'.format(self.lastChapter)})\\n\\n\\n\\n\\n\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.lastBook is not None:\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.lastBook, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-19 01:36:51,244 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":12}}}' 2018-02-19 01:36:51,418 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 26 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:36:51,419 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 26 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:36:51,765 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:36:51,766 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:51,766 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:51,766 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:51,766 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:51,766 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:51,767 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:51,767 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:51,767 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:51,767 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:36:51,930 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:51,931 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:36:51,931 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:36:51,931 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:51,931 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:51,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:36:51,932 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:36:51,932 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:36:51,932 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:36:52,096 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:36:52,697 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 26 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:36:52,697 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 196}, 'end': {'character': 24, 'line': 196}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 206}, 'end': {'character': 87, 'line': 206}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 95, 'line': 208}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 240}, 'end': {'character': 86, 'line': 240}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 83, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 245}, 'end': {'character': 92, 'line': 245}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 248}, 'end': {'character': 86, 'line': 248}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 264}, 'end': {'character': 83, 'line': 264}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 275}, 'end': {'character': 37, 'line': 275}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 8, 'line': 288}, 'end': {'character': 28, 'line': 288}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (6)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 469}, 'end': {'character': 55, 'line': 469}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 28, 'line': 257}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 26 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 185}, 'end': {'character': 19, 'line': 185}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 204}, 'end': {'character': 19, 'line': 204}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 224}, 'end': {'character': 19, 'line': 224}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 253}, 'end': {'character': 19, 'line': 253}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 429}, 'end': {'character': 19, 'line': 429}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 458}, 'end': {'character': 19, 'line': 458}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:39:55,940 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-19 01:39:55,943 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":13}}}' 2018-02-19 01:39:56,444 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:39:56,445 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:39:56,445 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:39:56,445 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:39:56,445 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:39:56,445 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:39:56,446 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:39:56,446 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:39:56,446 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:39:56,446 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:39:56,598 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:39:56,598 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:39:56,598 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:39:56,598 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:39:56,599 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:39:56,599 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:39:56,599 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:39:56,599 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:39:56,599 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:39:56,749 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 441}, 'end': {'character': 19, 'line': 441}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:39:58,922 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 452}, 'end': {'character': 55, 'line': 452}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 441}, 'end': {'character': 19, 'line': 441}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:39:58,922 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 452}, 'end': {'character': 55, 'line': 452}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 441}, 'end': {'character': 19, 'line': 441}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:41:45,012 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":14}}}' 2018-02-19 01:41:45,514 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:41:45,514 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:41:45,514 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:41:45,515 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:41:45,515 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:41:45,515 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:41:45,515 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:41:45,516 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:41:45,516 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:41:45,516 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:41:45,590 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:41:45,590 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:41:45,591 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:41:45,591 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:41:45,591 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:41:45,591 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:41:45,591 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:41:45,591 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:41:45,592 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:41:45,663 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 444}, 'end': {'character': 19, 'line': 444}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:41:47,452 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 415}, 'end': {'character': 39, 'line': 415}}, 'source': 'pycodestyle', 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 455}, 'end': {'character': 55, 'line': 455}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [{'severity': 2, 'range': {'start': {'character': 12, 'line': 415}, 'end': {'character': 39, 'line': 415}}, 'source': 'pyflakes', 'message': "undefined name 'refBase'"}, {'severity': 2, 'range': {'start': {'character': 47, 'line': 416}, 'end': {'character': 57, 'line': 416}}, 'source': 'pyflakes', 'message': "undefined name 'refBase'"}], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 444}, 'end': {'character': 19, 'line': 444}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:41:47,453 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 415}, 'end': {'character': 39, 'line': 415}}, 'source': 'pycodestyle', 'code': 'E122', 'message': 'E122 continuation line missing indentation or outdented'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 455}, 'end': {'character': 55, 'line': 455}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 415}, 'end': {'character': 39, 'line': 415}}, 'source': 'pyflakes', 'message': "undefined name 'refBase'"}, {'severity': 2, 'range': {'start': {'character': 47, 'line': 416}, 'end': {'character': 57, 'line': 416}}, 'source': 'pyflakes', 'message': "undefined name 'refBase'"}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 444}, 'end': {'character': 19, 'line': 444}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:42:24,794 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = attrs[\'n\']\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-19 01:42:24,796 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":15}}}' 2018-02-19 01:42:25,297 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:42:25,298 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:42:25,299 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:42:25,378 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:42:25,456 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:42:27,209 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:42:27,209 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:43:21,121 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":16}}}' 2018-02-19 01:43:21,623 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:43:21,623 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:21,623 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:21,623 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:21,623 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:21,624 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:21,624 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:21,624 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:21,624 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:21,624 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:21,697 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:43:21,768 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:43:23,207 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:43:23,207 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:43:24,961 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":17}}}' 2018-02-19 01:43:25,462 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:43:25,462 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:25,463 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:25,463 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:25,463 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:25,463 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:25,463 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:25,463 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:25,464 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:25,464 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:43:25,537 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:25,537 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:25,538 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:43:25,610 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:43:25,903 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:43:25,903 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:43:25,970 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = int(N)\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-19 01:43:25,972 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":18}}}' 2018-02-19 01:43:26,472 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:43:26,473 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:26,473 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:26,473 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:26,473 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:26,473 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:26,474 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:26,474 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:26,474 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:26,474 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:43:26,554 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:26,555 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:43:26,632 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:43:27,228 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:43:27,229 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:43:41,335 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":19}}}' 2018-02-19 01:43:41,337 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":19}}}' 2018-02-19 01:43:41,837 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:43:41,838 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:41,838 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:41,838 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:41,838 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:41,839 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:41,839 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:41,839 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:41,839 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:41,839 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:43:42,001 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:42,001 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:43:42,001 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:43:42,001 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:42,001 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:42,002 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:43:42,002 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:43:42,002 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:43:42,002 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:43:42,166 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:43:44,085 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:43:44,085 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 263}, 'end': {'character': 83, 'line': 263}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 456}, 'end': {'character': 55, 'line': 456}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 28, 'line': 256}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 412}, 'end': {'character': 19, 'line': 412}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 445}, 'end': {'character': 19, 'line': 445}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:45:08,625 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n\\n\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":20}}}' 2018-02-19 01:45:09,126 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:09,127 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:09,128 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:45:09,206 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:09,206 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:09,206 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:09,206 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:09,206 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:09,207 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:09,207 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:09,207 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:09,207 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:45:09,283 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 258}, 'end': {'character': 19, 'line': 258}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 415}, 'end': {'character': 19, 'line': 415}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 448}, 'end': {'character': 19, 'line': 448}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:45:10,837 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 255}, 'end': {'character': 27, 'line': 255}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 266}, 'end': {'character': 83, 'line': 266}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 459}, 'end': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 259}, 'end': {'character': 28, 'line': 259}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 258}, 'end': {'character': 19, 'line': 258}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 415}, 'end': {'character': 19, 'line': 415}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 448}, 'end': {'character': 19, 'line': 448}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:45:10,837 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 255}, 'end': {'character': 27, 'line': 255}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (4)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 266}, 'end': {'character': 83, 'line': 266}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 459}, 'end': {'character': 55, 'line': 459}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 259}, 'end': {'character': 28, 'line': 259}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 258}, 'end': {'character': 19, 'line': 258}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 415}, 'end': {'character': 19, 'line': 415}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 448}, 'end': {'character': 19, 'line': 448}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:45:29,313 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\'\\n + self.lastVerse})\\n\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":21}}}' 2018-02-19 01:45:29,815 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:45:29,815 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:29,816 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:29,817 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:29,891 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:45:29,961 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:45:30,259 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 254}, 'end': {'character': 31, 'line': 254}}, 'source': 'pycodestyle', 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 27, 'line': 257}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:45:30,259 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 254}, 'end': {'character': 31, 'line': 254}}, 'source': 'pycodestyle', 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 27, 'line': 257}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:45:32,670 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': refBase + \'.\' + self.lastVerse})\\n\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-19 01:45:32,672 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":22}}}' 2018-02-19 01:45:33,173 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:45:33,173 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:33,173 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:33,173 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:33,174 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:33,174 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:33,174 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:33,174 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:33,175 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:33,175 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:45:33,344 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:33,344 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:33,344 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:33,344 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:33,345 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:33,345 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:33,345 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:33,345 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:33,345 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:45:33,502 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 416}, 'end': {'character': 19, 'line': 416}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:45:35,807 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 27, 'line': 256}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 416}, 'end': {'character': 19, 'line': 416}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:45:35,807 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 256}, 'end': {'character': 27, 'line': 256}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 416}, 'end': {'character': 19, 'line': 416}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:45:55,211 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(refBase,\\n self.lastVerse)})\\n\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":23}}}' 2018-02-19 01:45:55,713 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:45:55,713 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:55,713 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:55,714 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:45:55,787 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:45:55,858 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:45:56,431 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 254}, 'end': {'character': 30, 'line': 254}}, 'source': 'pycodestyle', 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 27, 'line': 257}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:45:56,431 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 12, 'line': 254}, 'end': {'character': 30, 'line': 254}}, 'source': 'pycodestyle', 'code': 'E128', 'message': 'E128 continuation line under-indented for visual indent'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 27, 'line': 257}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:46:02,736 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase,\\n self.lastVerse)})\\n\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":24}}}' 2018-02-19 01:46:03,237 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:46:03,238 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:03,238 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:03,238 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:03,238 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:03,238 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:03,238 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:03,239 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:03,239 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:03,239 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:03,313 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:03,314 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:46:03,383 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 258}, 'end': {'character': 19, 'line': 258}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 261}, 'end': {'character': 19, 'line': 261}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 418}, 'end': {'character': 19, 'line': 418}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 451}, 'end': {'character': 19, 'line': 451}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:46:03,717 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 258}, 'end': {'character': 27, 'line': 258}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 269}, 'end': {'character': 83, 'line': 269}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 462}, 'end': {'character': 55, 'line': 462}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 262}, 'end': {'character': 28, 'line': 262}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 258}, 'end': {'character': 19, 'line': 258}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 261}, 'end': {'character': 19, 'line': 261}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 418}, 'end': {'character': 19, 'line': 418}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 451}, 'end': {'character': 19, 'line': 451}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:46:03,717 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 258}, 'end': {'character': 27, 'line': 258}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 269}, 'end': {'character': 83, 'line': 269}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 462}, 'end': {'character': 55, 'line': 462}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 262}, 'end': {'character': 28, 'line': 262}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 258}, 'end': {'character': 19, 'line': 258}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 261}, 'end': {'character': 19, 'line': 261}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 418}, 'end': {'character': 19, 'line': 418}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 451}, 'end': {'character': 19, 'line': 451}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:46:04,036 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-19 01:46:04,040 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":25}}}' 2018-02-19 01:46:04,541 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:46:04,541 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:04,541 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:04,541 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:04,542 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:04,542 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:04,542 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:04,543 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:04,543 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:04,543 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:46:04,709 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:04,709 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:04,710 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:04,710 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:04,710 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:04,710 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:04,711 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:04,711 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:04,711 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:46:04,881 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:46:05,490 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 27, 'line': 257}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:46:05,490 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 257}, 'end': {'character': 27, 'line': 257}}, 'source': 'pycodestyle', 'code': 'E303', 'message': 'E303 too many blank lines (2)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 268}, 'end': {'character': 83, 'line': 268}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 261}, 'end': {'character': 28, 'line': 261}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 257}, 'end': {'character': 19, 'line': 257}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 260}, 'end': {'character': 19, 'line': 260}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:46:19,326 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-19 01:46:19,328 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":26}}}' 2018-02-19 01:46:19,829 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:46:19,829 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:19,829 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:19,829 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:19,829 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:19,830 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:19,830 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:19,830 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:19,830 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:19,830 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:46:19,991 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:19,991 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:19,991 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:19,992 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:19,992 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:19,992 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:19,992 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:19,992 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:19,993 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:46:20,154 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 416}, 'end': {'character': 19, 'line': 416}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:46:22,232 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 416}, 'end': {'character': 19, 'line': 416}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:46:22,232 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 416}, 'end': {'character': 19, 'line': 416}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:46:55,009 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\',\\n attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":27}}}' 2018-02-19 01:46:55,511 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:46:55,511 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:55,511 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:55,511 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:55,512 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:55,512 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:55,512 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:55,512 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:55,512 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:55,512 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:46:55,586 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:55,586 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:46:55,586 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:46:55,586 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:55,586 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:55,586 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:46:55,587 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:46:55,587 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:46:55,587 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:46:55,659 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:46:55,965 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:46:55,965 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 461}, 'end': {'character': 55, 'line': 461}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 450}, 'end': {'character': 19, 'line': 450}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:47:22,699 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-19 01:47:22,703 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":28}}}' 2018-02-19 01:47:23,207 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 01:47:23,207 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:47:23,207 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:47:23,207 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:47:23,208 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:47:23,208 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:47:23,208 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:47:23,208 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:47:23,208 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:47:23,208 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:47:23,289 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:47:23,290 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 01:47:23,290 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:47:23,369 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 19, 'line': 446}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}] 2018-02-19 01:47:25,992 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 457}, 'end': {'character': 55, 'line': 457}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}], [{'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}], [], [{'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 19, 'line': 446}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], []] [hook] 2018-02-19 01:47:25,992 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'source': 'pycodestyle', 'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1'}, {'severity': 2, 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'source': 'pycodestyle', 'code': 'E722', 'message': "E722 do not use bare except'"}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (86 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (94 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (91 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (85 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'source': 'pycodestyle', 'code': 'E501', 'message': 'E501 line too long (82 > 79 characters)'}, {'severity': 2, 'range': {'start': {'character': 55, 'line': 457}, 'end': {'character': 55, 'line': 457}}, 'source': 'pycodestyle', 'code': 'W292', 'message': 'W292 no newline at end of file'}, {'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}, 'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'source': 'pydocstyle', 'code': 'D100', 'message': 'D100: Missing docstring in public module'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'source': 'pydocstyle', 'code': 'D101', 'message': 'D101: Missing docstring in public class'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'source': 'pydocstyle', 'code': 'D107', 'message': 'D107: Missing docstring in __init__'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}, {'severity': 2, 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 19, 'line': 446}}, 'source': 'pydocstyle', 'code': 'D102', 'message': 'D102: Missing docstring in public method'}], 'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py'} 2018-02-19 01:51:24,949 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 01:51:24,949 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/.local/bin","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/.local/bin","trace":"off"}}' 2018-02-19 01:51:24,950 UTC - DEBUG - pyls.language_server - Language server initialized with {'initializationOptions': {}, 'capabilities': {}, 'rootPath': '/home/matej/.local/bin', 'rootUri': 'file:///home/matej/.local/bin', 'trace': 'off'} 2018-02-19 01:51:25,540 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin pyls_mypy from 2018-02-19 01:51:25,541 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 01:51:25,542 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 01:51:25,542 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 01:51:25,542 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 01:51:25,542 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 01:51:25,542 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 01:51:25,542 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-19 01:51:25,542 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: document: None config: 2018-02-19 01:51:25,542 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 01:51:25,543 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: document: None config: 2018-02-19 01:51:25,543 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 01:51:25,543 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: document: None config: 2018-02-19 01:51:25,543 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 01:51:25,543 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: document: None config: 2018-02-19 01:51:25,543 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 01:51:25,543 UTC - INFO - pyls.python_ls - Server capabilities: {'documentFormattingProvider': True, 'executeCommandProvider': {'commands': []}, 'referencesProvider': True, 'documentSymbolProvider': True, 'hoverProvider': True, 'experimental': {}, 'codeActionProvider': True, 'documentRangeFormattingProvider': True, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'definitionProvider': True, 'textDocumentSync': 2, 'renameProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'codeLensProvider': {'resolveProvider': False}} 2018-02-19 01:51:25,545 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/.local/bin/xmldiff","version":1,"languageId":"python","text":"#!/usr/bin/python\\n\\nfrom xmldiff import main \\nmain.run()"}}}' 2018-02-19 01:51:25,547 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: document: file:///home/matej/.local/bin/xmldiff config: 2018-02-19 01:51:25,547 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 01:51:26,055 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/.local/bin/xmldiff config: 2018-02-19 01:51:26,056 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:51:26,056 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:51:26,056 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:51:26,056 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:51:26,056 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:51:26,057 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:51:26,057 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:51:26,057 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 01:51:26,058 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:51:26,058 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 01:51:26,058 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 01:51:26,058 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:51:26,058 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:51:26,058 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 01:51:26,059 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 01:51:26,059 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 01:51:26,059 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 01:51:26,067 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 01:51:27,138 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[], [{'range': {'end': {'line': 2, 'character': 26}, 'start': {'line': 2, 'character': 24}}, 'source': 'pycodestyle', 'severity': 2, 'message': 'W291 trailing whitespace', 'code': 'W291'}, {'range': {'end': {'line': 3, 'character': 10}, 'start': {'line': 3, 'character': 10}}, 'source': 'pycodestyle', 'severity': 2, 'message': 'W292 no newline at end of file', 'code': 'W292'}], [], [], []] [hook] 2018-02-19 01:51:27,139 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'range': {'end': {'line': 2, 'character': 26}, 'start': {'line': 2, 'character': 24}}, 'source': 'pycodestyle', 'severity': 2, 'message': 'W291 trailing whitespace', 'code': 'W291'}, {'range': {'end': {'line': 3, 'character': 10}, 'start': {'line': 3, 'character': 10}}, 'source': 'pycodestyle', 'severity': 2, 'message': 'W292 no newline at end of file', 'code': 'W292'}], 'uri': 'file:///home/matej/.local/bin/xmldiff'} 2018-02-19 02:31:08,919 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 02:31:08,920 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 02:31:08,921 UTC - DEBUG - pyls.language_server - Language server initialized with {'trace': 'off', 'initializationOptions': {}, 'capabilities': {}, 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible'} 2018-02-19 02:31:09,257 UTC - INFO - pyls.config.config - Loaded pyls plugin pyls_mypy from 2018-02-19 02:31:09,257 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 02:31:09,258 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 02:31:09,259 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] document: None workspace: config: 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] document: None workspace: config: 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - pyls_commands [hook] document: None workspace: config: 2018-02-19 02:31:09,259 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 02:31:09,260 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] document: None workspace: config: 2018-02-19 02:31:09,260 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 02:31:09,260 UTC - INFO - pyls.python_ls - Server capabilities: {'documentSymbolProvider': True, 'documentFormattingProvider': True, 'experimental': {}, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'hoverProvider': True, 'definitionProvider': True, 'executeCommandProvider': {'commands': []}, 'codeLensProvider': {'resolveProvider': False}, 'textDocumentSync': 2, 'documentRangeFormattingProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'renameProvider': True, 'referencesProvider': True, 'codeActionProvider': True} 2018-02-19 02:31:09,282 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 02:31:09,284 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 02:31:09,284 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 02:31:09,784 UTC - DEBUG - pyls.config.config - pyls_lint [hook] document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py workspace: config: 2018-02-19 02:31:09,784 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:31:09,785 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:31:09,785 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:31:09,785 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:31:09,785 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:31:09,786 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:31:09,786 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:31:09,786 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:31:09,932 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 92, 'character': 0}, 'end': {'line': 92, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 98, 'character': 0}, 'end': {'line': 98, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 141, 'character': 0}, 'end': {'line': 141, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 154, 'character': 0}, 'end': {'line': 154, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 162, 'character': 0}, 'end': {'line': 162, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}] 2018-02-19 02:31:09,932 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:31:09,932 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:31:09,932 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:31:09,932 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:31:09,933 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:31:09,933 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:31:09,933 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:31:09,933 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:31:09,933 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:31:10,465 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'code': 'E302'}, {'source': 'pycodestyle', 'range': {'start': {'line': 195, 'character': 16}, 'end': {'line': 195, 'character': 24}}, 'message': "E722 do not use bare except'", 'severity': 2, 'code': 'E722'}, {'source': 'pycodestyle', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'message': 'E501 line too long (86 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'message': 'E501 line too long (94 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'message': 'E501 line too long (91 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'message': 'W292 no newline at end of file', 'severity': 2, 'code': 'W292'}], [{'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 92, 'character': 0}, 'end': {'line': 92, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 98, 'character': 0}, 'end': {'line': 98, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 141, 'character': 0}, 'end': {'line': 141, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 154, 'character': 0}, 'end': {'line': 154, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 162, 'character': 0}, 'end': {'line': 162, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}], [{'source': 'mccabe', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2}], [], []] [hook] 2018-02-19 02:31:10,465 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 36}}, 'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'code': 'E302'}, {'source': 'pycodestyle', 'range': {'start': {'line': 195, 'character': 16}, 'end': {'line': 195, 'character': 24}}, 'message': "E722 do not use bare except'", 'severity': 2, 'code': 'E722'}, {'source': 'pycodestyle', 'range': {'start': {'line': 205, 'character': 79}, 'end': {'line': 205, 'character': 87}}, 'message': 'E501 line too long (86 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 207, 'character': 79}, 'end': {'line': 207, 'character': 95}}, 'message': 'E501 line too long (94 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 239, 'character': 79}, 'end': {'line': 239, 'character': 86}}, 'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 243, 'character': 79}, 'end': {'line': 243, 'character': 83}}, 'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 244, 'character': 79}, 'end': {'line': 244, 'character': 92}}, 'message': 'E501 line too long (91 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 247, 'character': 79}, 'end': {'line': 247, 'character': 86}}, 'message': 'E501 line too long (85 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 267, 'character': 79}, 'end': {'line': 267, 'character': 83}}, 'message': 'E501 line too long (82 > 79 characters)', 'severity': 2, 'code': 'E501'}, {'source': 'pycodestyle', 'range': {'start': {'line': 457, 'character': 55}, 'end': {'line': 457, 'character': 55}}, 'message': 'W292 no newline at end of file', 'severity': 2, 'code': 'W292'}, {'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 19}}, 'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module'}, {'source': 'pydocstyle', 'range': {'start': {'line': 77, 'character': 0}, 'end': {'line': 77, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 78, 'character': 0}, 'end': {'line': 78, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 83, 'character': 0}, 'end': {'line': 83, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 92, 'character': 0}, 'end': {'line': 92, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 93, 'character': 0}, 'end': {'line': 93, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 98, 'character': 0}, 'end': {'line': 98, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 141, 'character': 0}, 'end': {'line': 141, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 145, 'character': 0}, 'end': {'line': 145, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 154, 'character': 0}, 'end': {'line': 154, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 162, 'character': 0}, 'end': {'line': 162, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 170, 'character': 0}, 'end': {'line': 170, 'character': 19}}, 'code': 'D101', 'severity': 2, 'message': 'D101: Missing docstring in public class'}, {'source': 'pydocstyle', 'range': {'start': {'line': 171, 'character': 0}, 'end': {'line': 171, 'character': 19}}, 'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__'}, {'source': 'pydocstyle', 'range': {'start': {'line': 184, 'character': 0}, 'end': {'line': 184, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 203, 'character': 0}, 'end': {'line': 203, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 209, 'character': 0}, 'end': {'line': 209, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 215, 'character': 0}, 'end': {'line': 215, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 223, 'character': 0}, 'end': {'line': 223, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 229, 'character': 0}, 'end': {'line': 229, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 252, 'character': 0}, 'end': {'line': 252, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 256, 'character': 0}, 'end': {'line': 256, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 259, 'character': 0}, 'end': {'line': 259, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 414, 'character': 0}, 'end': {'line': 414, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'pydocstyle', 'range': {'start': {'line': 446, 'character': 0}, 'end': {'line': 446, 'character': 19}}, 'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method'}, {'source': 'mccabe', 'range': {'start': {'line': 260, 'character': 4}, 'end': {'line': 260, 'character': 28}}, 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2}]} 2018-02-19 02:39:11,319 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 02:39:11,319 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2010/clanky/CEP-Bible","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2010/clanky/CEP-Bible","trace":"off"}}' 2018-02-19 02:39:11,320 UTC - DEBUG - pyls.language_server - Language server initialized with {'initializationOptions': {}, 'rootUri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible', 'rootPath': '/home/matej/archiv/2010/clanky/CEP-Bible', 'capabilities': {}, 'trace': 'off'} 2018-02-19 02:39:11,613 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin pyls_mypy from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 02:39:11,614 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 02:39:11,615 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 02:39:11,615 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: config: document: None 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: config: document: None 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 02:39:11,615 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: config: document: None 2018-02-19 02:39:11,616 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 02:39:11,616 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: config: document: None 2018-02-19 02:39:11,616 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 02:39:11,616 UTC - INFO - pyls.python_ls - Server capabilities: {'documentSymbolProvider': True, 'codeActionProvider': True, 'textDocumentSync': 2, 'referencesProvider': True, 'documentFormattingProvider': True, 'executeCommandProvider': {'commands': []}, 'experimental': {}, 'definitionProvider': True, 'renameProvider': True, 'hoverProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'codeLensProvider': {'resolveProvider': False}, 'documentRangeFormattingProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}} 2018-02-19 02:39:11,638 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":1,"languageId":"python","text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}}}' 2018-02-19 02:39:11,640 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:39:11,640 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 02:39:12,140 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:39:12,141 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:12,141 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:12,141 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:12,141 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:12,141 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:12,142 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:12,142 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:12,142 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:39:12,285 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 19, 'line': 446}}, 'severity': 2}] 2018-02-19 02:39:12,285 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:12,285 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:12,286 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:39:13,994 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 457}, 'end': {'character': 55, 'line': 457}}, 'severity': 2}], [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 19, 'line': 446}}, 'severity': 2}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}}], [], []] [hook] 2018-02-19 02:39:13,994 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 36, 'line': 170}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 195}, 'end': {'character': 24, 'line': 195}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 205}, 'end': {'character': 87, 'line': 205}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 207}, 'end': {'character': 95, 'line': 207}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 239}, 'end': {'character': 86, 'line': 239}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 243}, 'end': {'character': 83, 'line': 243}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 244}, 'end': {'character': 92, 'line': 244}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 86, 'line': 247}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 267}, 'end': {'character': 83, 'line': 267}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 457}, 'end': {'character': 55, 'line': 457}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 141}, 'end': {'character': 19, 'line': 141}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 145}, 'end': {'character': 19, 'line': 145}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 154}, 'end': {'character': 19, 'line': 154}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 162}, 'end': {'character': 19, 'line': 162}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 170}, 'end': {'character': 19, 'line': 170}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 171}, 'end': {'character': 19, 'line': 171}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 184}, 'end': {'character': 19, 'line': 184}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 203}, 'end': {'character': 19, 'line': 203}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 209}, 'end': {'character': 19, 'line': 209}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 215}, 'end': {'character': 19, 'line': 215}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 223}, 'end': {'character': 19, 'line': 223}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 229}, 'end': {'character': 19, 'line': 229}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 252}, 'end': {'character': 19, 'line': 252}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 256}, 'end': {'character': 19, 'line': 256}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 414}, 'end': {'character': 19, 'line': 414}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 446}, 'end': {'character': 19, 'line': 446}}, 'severity': 2}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 260}, 'end': {'character': 28, 'line': 260}}}]} 2018-02-19 02:39:24,602 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\n\\n\\n\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":2}}}' 2018-02-19 02:39:25,103 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:25,104 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:25,105 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:39:25,241 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 187}, 'end': {'character': 19, 'line': 187}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 19, 'line': 206}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 212}, 'end': {'character': 19, 'line': 212}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 218}, 'end': {'character': 19, 'line': 218}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 226}, 'end': {'character': 19, 'line': 226}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 262}, 'end': {'character': 19, 'line': 262}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'severity': 2}] 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:25,242 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:25,243 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:39:25,643 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E303 too many blank lines (3)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 103}, 'end': {'character': 41, 'line': 103}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 198}, 'end': {'character': 24, 'line': 198}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 87, 'line': 208}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 95, 'line': 210}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 86, 'line': 242}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 83, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 92, 'line': 247}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 86, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 270}, 'end': {'character': 83, 'line': 270}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'severity': 2}], [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 187}, 'end': {'character': 19, 'line': 187}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 19, 'line': 206}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 212}, 'end': {'character': 19, 'line': 212}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 218}, 'end': {'character': 19, 'line': 218}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 226}, 'end': {'character': 19, 'line': 226}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 262}, 'end': {'character': 19, 'line': 262}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'severity': 2}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 263}, 'end': {'character': 28, 'line': 263}}}], [], []] [hook] 2018-02-19 02:39:25,643 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E303 too many blank lines (3)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 103}, 'end': {'character': 41, 'line': 103}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 198}, 'end': {'character': 24, 'line': 198}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 87, 'line': 208}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 95, 'line': 210}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 86, 'line': 242}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 83, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 92, 'line': 247}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 86, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 270}, 'end': {'character': 83, 'line': 270}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 187}, 'end': {'character': 19, 'line': 187}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 19, 'line': 206}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 212}, 'end': {'character': 19, 'line': 212}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 218}, 'end': {'character': 19, 'line': 218}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 226}, 'end': {'character': 19, 'line': 226}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 262}, 'end': {'character': 19, 'line': 262}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'severity': 2}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 263}, 'end': {'character': 28, 'line': 263}}}]} 2018-02-19 02:39:26,769 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={})\\nxmlns=\\"http://www.bibletechnologies.net/2003/OSIS/namespace\\"\\n-xmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\"\\n\\n\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":3}}}' 2018-02-19 02:39:27,270 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:39:27,270 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:27,271 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:27,271 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:27,271 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:27,271 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:27,271 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:27,271 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:27,272 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:27,272 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:27,296 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:27,297 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:39:27,302 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 0', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 61, 'line': 100}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 5, 'line': 100}, 'end': {'character': 61, 'line': 100}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 6, 'line': 101}, 'end': {'character': 55, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 10, 'line': 101}, 'end': {'character': 55, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 104}, 'end': {'character': 41, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'character': 8, 'line': 104}, 'end': {'character': 41, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'character': 4, 'line': 145}, 'end': {'character': 27, 'line': 145}}, 'severity': 2}], [], [{'source': 'pyflakes', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 7, 'line': 101}, 'end': {'character': 62, 'line': 101}}}], [{'source': 'mypy', 'message': 'unexpected indent', 'severity': 1, 'range': {'start': {'character': 8, 'line': 104}, 'end': {'character': 9, 'line': 104}}}]] [hook] 2018-02-19 02:39:27,302 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 0', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 100}, 'end': {'character': 61, 'line': 100}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 5, 'line': 100}, 'end': {'character': 61, 'line': 100}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 6, 'line': 101}, 'end': {'character': 55, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 10, 'line': 101}, 'end': {'character': 55, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 104}, 'end': {'character': 41, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'character': 8, 'line': 104}, 'end': {'character': 41, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'character': 4, 'line': 145}, 'end': {'character': 27, 'line': 145}}, 'severity': 2}, {'source': 'pyflakes', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 7, 'line': 101}, 'end': {'character': 62, 'line': 101}}}, {'source': 'mypy', 'message': 'unexpected indent', 'severity': 1, 'range': {'start': {'character': 8, 'line': 104}, 'end': {'character': 9, 'line': 104}}}]} 2018-02-19 02:39:37,481 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={\\n\\n\\n })\\nxmlns=\\"http://www.bibletechnologies.net/2003/OSIS/namespace\\"\\n-xmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\"\\n\\n\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":4}}}' 2018-02-19 02:39:37,983 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:39:37,983 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:37,983 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:37,984 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:39:38,008 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:38,009 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:39:38,014 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 0', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 103}, 'end': {'character': 61, 'line': 103}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 5, 'line': 103}, 'end': {'character': 61, 'line': 103}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 6, 'line': 104}, 'end': {'character': 55, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 10, 'line': 104}, 'end': {'character': 55, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'character': 4, 'line': 148}, 'end': {'character': 27, 'line': 148}}, 'severity': 2}], [], [{'source': 'pyflakes', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 7, 'line': 104}, 'end': {'character': 62, 'line': 104}}}], [{'source': 'mypy', 'message': 'unexpected indent', 'severity': 1, 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 9, 'line': 107}}}]] [hook] 2018-02-19 02:39:38,014 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E305 expected 2 blank lines after class or function definition, found 0', 'code': 'E305', 'range': {'start': {'character': 0, 'line': 103}, 'end': {'character': 61, 'line': 103}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 5, 'line': 103}, 'end': {'character': 61, 'line': 103}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 6, 'line': 104}, 'end': {'character': 55, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E225 missing whitespace around operator', 'code': 'E225', 'range': {'start': {'character': 10, 'line': 104}, 'end': {'character': 55, 'line': 104}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E113 unexpected indentation', 'code': 'E113', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E901 IndentationError: unindent does not match any outer indentation level', 'code': 'E901', 'range': {'start': {'character': 4, 'line': 148}, 'end': {'character': 27, 'line': 148}}, 'severity': 2}, {'source': 'pyflakes', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 7, 'line': 104}, 'end': {'character': 62, 'line': 104}}}, {'source': 'mypy', 'message': 'unexpected indent', 'severity': 1, 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 9, 'line': 107}}}]} 2018-02-19 02:39:47,106 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={\\n\\n\\"xmlns=\\"http://www.bibletechnologies.net/2003/OSIS/namespace\\"\\nxmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\"\\n\\n })\\n\\n\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":5}}}' 2018-02-19 02:39:47,607 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:39:47,608 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:47,608 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:47,608 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:47,608 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:47,608 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:47,608 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:47,609 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:47,609 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:47,609 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:39:47,682 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [] 2018-02-19 02:39:47,682 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:47,682 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:39:47,682 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:39:47,682 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:47,683 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:47,683 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:39:47,683 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:39:47,683 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:39:47,683 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:39:47,688 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 62, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 54, 'line': 102}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 12, 'line': 101}, 'end': {'character': 62, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 5, 'line': 102}, 'end': {'character': 54, 'line': 102}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 36, 'line': 177}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 202}, 'end': {'character': 24, 'line': 202}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 87, 'line': 212}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 214}, 'end': {'character': 95, 'line': 214}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 83, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 251}, 'end': {'character': 92, 'line': 251}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 254}, 'end': {'character': 86, 'line': 254}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 274}, 'end': {'character': 83, 'line': 274}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 464}, 'end': {'character': 55, 'line': 464}}, 'severity': 2}], [], [{'source': 'pyflakes', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 12, 'line': 101}, 'end': {'character': 74, 'line': 101}}}], [{'source': 'mypy', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 12, 'line': 101}, 'end': {'character': 13, 'line': 101}}}]] [hook] 2018-02-19 02:39:47,688 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 62, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 54, 'line': 102}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 12, 'line': 101}, 'end': {'character': 62, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E231 missing whitespace after ':'", 'code': 'E231', 'range': {'start': {'character': 5, 'line': 102}, 'end': {'character': 54, 'line': 102}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 36, 'line': 177}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 202}, 'end': {'character': 24, 'line': 202}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 87, 'line': 212}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 214}, 'end': {'character': 95, 'line': 214}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 83, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 251}, 'end': {'character': 92, 'line': 251}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 254}, 'end': {'character': 86, 'line': 254}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 274}, 'end': {'character': 83, 'line': 274}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 464}, 'end': {'character': 55, 'line': 464}}, 'severity': 2}, {'source': 'pyflakes', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 12, 'line': 101}, 'end': {'character': 74, 'line': 101}}}, {'source': 'mypy', 'message': 'invalid syntax', 'severity': 1, 'range': {'start': {'character': 12, 'line': 101}, 'end': {'character': 13, 'line': 101}}}]} 2018-02-19 02:40:04,241 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={\\n\\n\\"xmlns\\": \\"http://www.bibletechnologies.net/2003/OSIS/namespace\\",\\n\\"xmlns:xsi\\": \\"http://www.w3.org/2001/XMLSchema-instance\\"\\n\\n })\\n\\n\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":6}}}' 2018-02-19 02:40:04,742 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:40:04,743 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:04,743 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:40:04,743 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:40:04,743 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:04,743 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:04,743 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:04,744 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:40:04,744 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:04,744 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:40:04,870 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 152}, 'end': {'character': 19, 'line': 152}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 161}, 'end': {'character': 19, 'line': 161}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 169}, 'end': {'character': 19, 'line': 169}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 19, 'line': 177}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 178}, 'end': {'character': 19, 'line': 178}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 19, 'line': 191}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 222}, 'end': {'character': 19, 'line': 222}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 236}, 'end': {'character': 19, 'line': 236}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 263}, 'end': {'character': 19, 'line': 263}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 266}, 'end': {'character': 19, 'line': 266}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 421}, 'end': {'character': 19, 'line': 421}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 453}, 'end': {'character': 19, 'line': 453}}, 'severity': 2}] 2018-02-19 02:40:04,870 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:04,870 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:40:04,870 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:40:04,871 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:04,871 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:04,871 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:04,871 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:40:04,871 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:04,871 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:40:06,322 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 65, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 57, 'line': 102}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 36, 'line': 177}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 202}, 'end': {'character': 24, 'line': 202}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 87, 'line': 212}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 214}, 'end': {'character': 95, 'line': 214}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 83, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 251}, 'end': {'character': 92, 'line': 251}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 254}, 'end': {'character': 86, 'line': 254}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 274}, 'end': {'character': 83, 'line': 274}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 464}, 'end': {'character': 55, 'line': 464}}, 'severity': 2}], [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 152}, 'end': {'character': 19, 'line': 152}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 161}, 'end': {'character': 19, 'line': 161}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 169}, 'end': {'character': 19, 'line': 169}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 19, 'line': 177}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 178}, 'end': {'character': 19, 'line': 178}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 19, 'line': 191}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 222}, 'end': {'character': 19, 'line': 222}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 236}, 'end': {'character': 19, 'line': 236}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 263}, 'end': {'character': 19, 'line': 263}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 266}, 'end': {'character': 19, 'line': 266}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 421}, 'end': {'character': 19, 'line': 421}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 453}, 'end': {'character': 19, 'line': 453}}, 'severity': 2}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 267}, 'end': {'character': 28, 'line': 267}}}], [], []] [hook] 2018-02-19 02:40:06,322 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 101}, 'end': {'character': 65, 'line': 101}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E122 continuation line missing indentation or outdented', 'code': 'E122', 'range': {'start': {'character': 0, 'line': 102}, 'end': {'character': 57, 'line': 102}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E303 too many blank lines (2)', 'code': 'E303', 'range': {'start': {'character': 8, 'line': 107}, 'end': {'character': 41, 'line': 107}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 36, 'line': 177}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 202}, 'end': {'character': 24, 'line': 202}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 212}, 'end': {'character': 87, 'line': 212}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 214}, 'end': {'character': 95, 'line': 214}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 86, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 83, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 251}, 'end': {'character': 92, 'line': 251}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 254}, 'end': {'character': 86, 'line': 254}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 274}, 'end': {'character': 83, 'line': 274}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 464}, 'end': {'character': 55, 'line': 464}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 152}, 'end': {'character': 19, 'line': 152}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 161}, 'end': {'character': 19, 'line': 161}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 169}, 'end': {'character': 19, 'line': 169}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 177}, 'end': {'character': 19, 'line': 177}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 178}, 'end': {'character': 19, 'line': 178}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 191}, 'end': {'character': 19, 'line': 191}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 210}, 'end': {'character': 19, 'line': 210}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 216}, 'end': {'character': 19, 'line': 216}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 222}, 'end': {'character': 19, 'line': 222}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 230}, 'end': {'character': 19, 'line': 230}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 236}, 'end': {'character': 19, 'line': 236}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 263}, 'end': {'character': 19, 'line': 263}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 266}, 'end': {'character': 19, 'line': 266}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 421}, 'end': {'character': 19, 'line': 421}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 453}, 'end': {'character': 19, 'line': 453}}, 'severity': 2}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 267}, 'end': {'character': 28, 'line': 267}}}]} 2018-02-19 02:40:25,387 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didChange","jsonrpc":"2.0","params":{"contentChanges":[{"text":"#!/usr/bin/python3\\nimport collections\\nimport enum\\nimport logging\\nimport sys\\nimport xml.sax\\nfrom xml.sax.saxutils import XMLFilterBase, XMLGenerator\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n level=logging.DEBUG)\\nlog = logging.getLogger(\'CEPtoOSIS\')\\n\\nTESTAMENTS = {\'ot\': \'Star\xc3\xa1 smlouva\',\\n \'nt\': \'Nov\xc3\xa1 smlouva\'}\\n\\nTRANS_ELEM2CHAR = {\\n \'bczuv\': \'\xe2\x80\x9e\', \'eczuv\': \'\xe2\x80\x9c\', # jin\xc3\xbd druh cit\xc3\xa1t\xc5\xaf ??? nap\xc5\x99. Jan 8:10\\n \'pomlcka\': \'\xe2\x80\x94\', \'krat\': \'\xc3\x97\', \'minus\': \'\xe2\x80\x93\',\\n # takto vyzna\xc4\x8dujeme slova nebo pas\xc3\xa1\xc5\xbee, kter\xc3\xa9 jsou vypu\xc5\xa1t\xc4\x9bny\\n # pouze v m\xc3\xa9n\xc4\x9b v\xc3\xbdznamn\xc3\xbdch skupin\xc3\xa1ch rukopis\xc5\xaf.\\n \'hzavorka\': \'[\',\\n # Viz. Jan 8:10 ... [text] je ud\xc4\x9bl\xc3\xa1no bez element\xc5\xaf\\n\\n # vymezen\xc3\xad rozsahu odkazu na pozn\xc3\xa1mku\\n \\"bkzavorka\\": \'\xe2\x8c\x88\', \\"ekzavorka\\": \'\xe2\x8c\x89\',\\n\\n \\"dots\\": \'\xe2\x80\xa6\', \\"amacron\\": \'\xc4\x81\', \\"omacron\\": \'\xc5\x8d\',\\n\\n # used for example in note t9 on page 15 for Gn 4:3\\n \\"hdotbelow\\": \'\xe1\xb8\xa5\',\\n\\n # TODO these are not correct, they are subscript a and e, not\\n # superscript used e.g., for elohim, note v2 on page. 11.\\n \\"esuperior\\": \'\xe2\x82\x91\', \\"asuperior\\": \'\xe2\x82\x90\',\\n\\n \\"quoteleft\\": \'\xe2\x80\x98\', \\"quoteright\\": \'\xe2\x80\x99\',\\n\\n \\"acircumflex\\": \'\xc3\xa2\', \\"bmacronbelow\\": \'\xe1\xb8\x87\', \\"dmacronbelow \\": \'\xe1\xb8\x8f\',\\n \\"ecircumflex\\": \'\xc3\xaa\', \\"emacron\\": \'\xc4\x93\', \\"gmacron\\": \'\xe1\xb8\xa1\', \\"icircumflex\\": \'\xc3\xae\',\\n \\"kmacronbelow\\": \'\xe1\xb8\xb5\', \\"sacute\\": \'\xc5\x9b\', \\"sdotbelow\\": \'\xe1\xb9\xa3\', \\"tdotbelow\\": \'\xe1\xb9\xad\',\\n \\"tmacronbelow\\": \'\xe1\xb9\xaf\', \\"ocircumflex\\": \'\xc3\xb4\', \\"ucircumflex\\": \'\xc3\xbb\',\\n\\n # TODO that\'s zero, not o\\n \\"osuperior\\": \'\xe2\x81\xb0\',\\n\\n # TODO that\'s p-dot not p-macron\\n \\"pmacron\\": \'\xe1\xb9\x97\',\\n\\n # chained reference; mark behind references; showing always\\n # previous and following occurence of the expression or idiom\\n \\"retez\\": \'*\',\\n\\n # large differences among various translations\\n \\"rozdily\\": \'$\',\\n\\n # majority; TODO maybe just write full word? Would it matter?\\n \\"vetsina\\": \'&\',\\n\\n # \xc3\xbapln\xc3\xbd v\xc3\xbd\xc4\x8det odkaz\xc5\xaf ve StS, resp. NS, kde je pat\xc5\x99i\xc4\x8dn\xc3\xbd\\n # ekvivalent pou\xc5\xbeit\\n \\"final\\": \'\xe2\x80\xa0\',\\n\\n # voln\xc4\x9bji\\n \\"tilde\\": \'~\',\\n\\n # ozna\xc4\x8duje paraleln\xc3\xad m\xc3\xadsto (shodn\xc3\xa9 nebo t\xc3\xa9m\xc4\x9b\xc5\x99 shodn\xc3\xa9)\\n \\"shoda\\": \'//\',\\n\\n \\"spojovnik\\": \'\xe2\x80\x93\',\\n\\n # mark in the list of references, marking the first occurence of\\n # the (Hebrew) expression in the Old Testament\\n \'prvni\': \'@\'\\n}\\n\\nCollected_head = collections.namedtuple(\'Collected_head\', \'name attrs\')\\n\\n\\nclass BaseProcessor(XMLFilterBase):\\n def __init__(self, upstream, downstream):\\n XMLFilterBase.__init__(self, upstream)\\n self.ds = downstream\\n self.lastVerse = 0 # never used in CEPProcessor\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.ds.startElement(name, attrs)\\n if content is not None:\\n self.ds.characters(content)\\n self.ds.endElement(name)\\n\\n\\nclass CEPProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.curr_test = \'\'\\n self.__book_file = None\\n\\n def startDocument(self):\\n self.ds.startElement(\'osis\', attrs={\\n \'xmlns\': \'http://www.bibletechnologies.net/2003/OSIS/namespace\',\\n \'xmlns:xsi\': \'http://www.w3.org/2001/XMLSchema-instance\'\\n })\\n self.ds.startElement(\'osisText\',\\n {\'osisIDWork\': \'CzeCSP\',\\n \'osisRefWork\': \'bible\',\\n \'xml:lang\': \'cs\',\\n \'canonical\': \'true\'})\\n self.ds.startElement(\'header\', attrs={})\\n self.ds.startElement(\'revisionDesc\', {\'resp\': \'Mat\xc4\x9bj Cepl\'})\\n self.elem(\'date\', \'2010.09.07\')\\n self.elem(\'p\', \'This is just an information about the book.\')\\n self.ds.endElement(\'revisionDesc\')\\n self.ds.startElement(\'work\', {\'osisWork\': \\"CzeCSP\\"})\\n self.elem(\'title\', \'\xc4\x8cesk\xc3\xbd studijn\xc3\xad p\xc5\x99eklad Bible\')\\n self.elem(\'creator\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'date\', \'2012-03-06\',\\n {\'event\': \'eversion\', \'type\': \'Gregorian\'})\\n self.elem(\'publisher\', \'Nada\xc4\x8dn\xc3\xad fond p\xc5\x99ekladu Bible\')\\n self.elem(\'type\', \'Bible\', {\'type\': \'OSIS\'})\\n self.elem(\'identifier\', \'Bible.cs.CSP\', {\'type\': \'OSIS\'})\\n self.elem(\'source\', \'http://www.biblecsp.cz/\')\\n self.elem(\'language\', \'CES\', {\'type\': \'SIL\'})\\n self.elem(\'coverage\', \'Czech 2010\')\\n self.elem(\'rights\', \'Copyright 2009 Nakladatelstv\xc3\xad KMS\',\\n {\'type\': \'x-copyright\'})\\n self.elem(\'rights\', \'CC BY-NC-ND 3.0 CZ\',\\n {\'type\': \'x-license\'})\\n self.elem(\'rights\',\\n \'http://creativecommons.org/licenses/by-nc-nd/3.0/cz/\',\\n {\'type\': \'x-license-url\'})\\n self.elem(\'rights\',\\n \'Email comments to office in domain biblescp.cz\',\\n {\'type\': \'x-comments-to\'})\\n self.elem(\'refSystem\', \'Bible.MT\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'strong\'})\\n self.elem(\'refSystem\', \'Dict.Strongs\')\\n self.ds.endElement(\'work\')\\n self.ds.startElement(\'work\', {\'osisWork\': \'robinson\'})\\n self.elem(\'refSystem\', \'Dict.Robinson\')\\n self.ds.endElement(\'work\')\\n self.ds.endElement(\'header\')\\n\\n def endDocument(self):\\n self.ds.endElement(\'osisText\')\\n self.ds.endElement(\'osis\')\\n\\n def startElement(self, name, attrs):\\n if name in (\'ot\', \'nt\'):\\n self.curr_test = name\\n self.ds.startElement(\'div\',\\n {\'type\': \'bookGroup\', \'canonical\': \'true\'})\\n self.elem(\'title\', TESTAMENTS[name])\\n elif name == \'file\':\\n self.__book_file = \'\'\\n\\n def endElement(self, name):\\n if name in (\'ot\', \'nt\'):\\n self.ds.endElement(\'div\')\\n elif name == \'file\':\\n BookProcessor(xml.sax.make_parser(), self.ds).parse(\\n self.__book_file)\\n self.__book_file = None\\n\\n def characters(self, content):\\n if self.__book_file is not None:\\n self.__book_file += content\\n\\n\\nEvent = collections.namedtuple(\'Event\', \'type name content attrs\')\\nEType = enum.Enum(\'EType\', \'startElement endElement characters\')\\n\\nclass BookProcessor(BaseProcessor):\\n def __init__(self, upstream, downstream):\\n super().__init__(upstream, downstream)\\n self.refKniha = None\\n self.collectedHeader = []\\n self.collected_note = []\\n self.collected_title = None\\n self.collecting_title = False\\n # if not None -> we\'re collecting content of a note\\n self.current_note = None\\n self.lastChapter = 0\\n self.lastVerse = 0\\n self.notes = {}\\n\\n def create_event(self, event_type, name=\'\', content=\'\', attrs=None):\\n if attrs is None:\\n attrs = {}\\n\\n if self.current_note is not None:\\n self.collected_note.append(\\n Event(event_type, name, content, attrs))\\n else:\\n if event_type == EType.startElement:\\n try:\\n self.ds.startElement(name, attrs)\\n except:\\n log.debug(\'name = %s, attrs = %s\', name, attrs)\\n raise\\n elif event_type == EType.endElement:\\n self.ds.endElement(name)\\n elif event_type == EType.characters:\\n self.ds.characters(content)\\n\\n def trans_change_start(self):\\n if self.current_note is not None:\\n self.create_event(EType.startElement, name=\'hi\', attrs={\'type\': \'italic\'})\\n else:\\n self.create_event(EType.startElement, name=\'transChange\', attrs={\'type\': \'added\'})\\n\\n def trans_change_end(self):\\n if self.current_note is not None:\\n self.create_event(EType.endElement, name=\'hi\')\\n else:\\n self.create_event(EType.endElement, name=\'transChange\')\\n\\n def elem(self, name, content=None, attrs=None):\\n if attrs is None:\\n attrs = {}\\n self.create_event(EType.startElement, name=name, attrs=attrs)\\n if content is not None:\\n self.create_event(EType.characters, content=content)\\n self.create_event(EType.endElement, name=name)\\n\\n def insert_title(self, title_type):\\n if self.collected_title is not None:\\n self.elem(\\"title\\", self.collected_title,\\n attrs={\'type\': title_type})\\n self.collected_title = None\\n\\n def getRefID(self):\\n return \\"{}.{:d}.{:d}\\".format(self.refKniha, self.lastChapter,\\n self.lastVerse)\\n\\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n # \\n\\n def end_verse(self, refBase):\\n self.elem(\'verse\', attrs={\'eID\': \'{}.{:d}\'.format(\\n refBase, self.lastVerse)})\\n\\n def indexOT(self, no):\\n return \'\'\\n\\n def startElement(self, name, attrs):\\n if name == \'kniha\':\\n self.refKniha = attrs[\'jmeno\']\\n log.info(\'Processing %s ...\', self.refKniha)\\n self.create_event(EType.startElement, name=\'div\',\\n attrs={\'type\': \'book\',\\n \'osisID\': self.refKniha,\\n \'canonical\': \'true\'})\\n # It seems individual Biblical books usually don\'t have titles in OSIS\\n\\n elif name == \'titulek\':\\n # see https://wiki.crosswire.org/OSIS_pre-verse_titles\\n # but I am not sure whether it matters\\n self.collecting_title = True\\n self.collected_title = \'\'\\n\\n elif name == \'kap\':\\n N = int(attrs[\'n\'])\\n ref_ID = \'{}.{:d}\'.format(self.refKniha, N)\\n if self.refKniha is not None:\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n if N > 1:\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n\\n self.elem(\'chapter\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'chapter\')\\n self.lastChapter = N\\n\\n elif name == \'vers\':\\n curVerse = int(attrs[\'n\'])\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n ref_ID = \'{}.{:d}\'.format(refBase, curVerse)\\n # Find out whether this is a first verse in a chapter;\\n # notice that element is milestoned as well, so we\\n # have to count a distance in elements from it,\\n # rather than use plain count()\\n if curVerse != 1:\\n self.end_verse(refBase)\\n self.elem(\'verse\', attrs={\'sID\': ref_ID, \'osisID\': ref_ID})\\n self.insert_title(\'main\')\\n self.lastVerse = curVerse\\n\\n elif name == \'p\':\\n self.create_event(EType.startElement, name=\'p\', attrs={})\\n\\n elif name in TRANS_ELEM2CHAR:\\n self.create_event(EType.characters, content=TRANS_ELEM2CHAR[name])\\n\\n elif name == \'czap\':\\n self.create_event(EType.startElement, name=\'q\',\\n attrs={\'marker\': \\"\'\\"})\\n\\n # when the Greek expression needs to be present in multiple\\n # words (except of grammatical particle \\"by\\" (for conditional),\\n # zvratn\xc3\xa9 pronoun \\"se\\", auxilliary verb \\"b\xc3\xbdt\\" (to be) and\\n # demonstrative (ukazovac\xc3\xadch) pronouns), they are in majority\\n # cases marked by the element . E.g., Mt 3:17\\n # kter\xc3\xbd \xc5\x99\xc3\xadkal, literally \xe2\x80\x9cwhich was\\n # saying\xe2\x80\x9d\\n #\\n # Fow now we go by the path of the least resistance ... keep\\n # element intact and process it with a Python script.\\n #\\n # Actually, after discussion with the original translators we\\n # came to the conclusion that the case of the spoj element is\\n # hopeless, a way more complicated, and it should be just\\n # ignored.\\n elif name == \\"spoj\\":\\n pass\\n\\n # Greek verb is in perfectum (which expresses an action which\\n # happened in the past, but which consequences are still visible\\n # in the present time; Mt 1:22)\\n elif name == \'perf\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-2RAI-3S\'})\\n\\n # Future tense where both perfective and imperfective aspects\\n # are possible. This marks majority of cases where both aspects\\n # are possible. (Mt 1:21)\\n elif name == \'fut\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-FAI-3S\'})\\n\\n # historical present tens of the Greek verb, if it has been\\n # translated into Czech as a past tense (e.g.:\\n # \xc5\x99ekl = \xc5\x99.:\xc5\x99\xc3\xadk\xc3\xa1). If there is in the Greek\\n # text participium of the present tense attached to the main\\n # verb, then the mark is only on the main verb (Mt 2:13)\\n elif name == \'hvezda\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:V-PEI-3S\'})\\n\\n # marks a definite article (not available in Czech) for words\\n # B\xc5\xafh (God), duch (spirit), slovo (word) and pravda (truth)\\n # (e.g., Mt 1:23)\\n elif name == \'clen\':\\n self.elem(\'w\', attrs={\'morph\': \'robinson:T-DSM\',\\n \'lemma\': \'strong:G3588\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. soma nebo jeho odvozenin (Mt 5:29)\\n elif name == \'soma\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4983\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. sarx nebo jeho odvozenin (Mt 16:17)\\n elif name == \'sarx\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4561\'})\\n\\n # slovo je p\xc5\x99ekladem \xc5\x99. rh\xc3\xa9ma (Mt 4:4)\\n elif name == \'rhema\':\\n self.elem(\'w\', attrs={\'lemma\': \'strong:G4487\'})\\n\\n # If the reference is in italic, it doesn\'t refer to the expression\\n # where it is in the text, but rather to whole verse or its part.\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_start()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.current_note = attrs[\'n\']\\n\\n elif name in (\'odkaz\', \'odkazo\'):\\n ELEM_TYPES = {\'odkaz\': \'study\', \'odkazo\': \'crossReference\'}\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n elem_type = ELEM_TYPES[name]\\n\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': elem_type,\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!\' + N,\\n \'n\': N\\n })\\n for ev in self.notes[N]:\\n self.create_event(ev.type, ev.name, ev.content, ev.attrs)\\n self.create_event(EType.endElement, name=\'note\')\\n\\n # references to the table 91 (in the Old Testament) of the\\n # source notes.\\n elif name == \'index\':\\n ref_ID = self.getRefID()\\n N = attrs[\'n\']\\n\\n if self.current_note is not None:\\n self.create_event(EType.characters, \'(\')\\n self.indexOT(no=N)\\n self.create_event(EType.characters, \')\')\\n else:\\n self.create_event(EType.startElement, name=\'note\', attrs={\\n \'type\': \'x-index\',\\n \'placement\': \'inline\',\\n \'osisRef\': ref_ID,\\n \'osisID\': ref_ID + \'!i\' + N,\\n \'n\': N,\\n \'indexOT\': self.indexOT(no=N)\\n })\\n self.create_event(EType.endElement, \'note\')\\n\\n def endElement(self, name):\\n if name == \'kniha\':\\n refBase = \'{}.{:d}\'.format(self.refKniha, self.lastChapter)\\n self.end_verse(refBase)\\n self.elem(\'chapter\', attrs={\'eID\': refBase})\\n self.create_event(EType.endElement, name=\'div\')\\n\\n elif name == \'p\':\\n self.create_event(EType.endElement, name=\'p\')\\n\\n elif name == \'czap\':\\n self.create_event(EType.endElement, name=\'q\')\\n\\n elif name == \'hzavorka\':\\n self.create_event(EType.characters, content=\']\')\\n\\n elif name in (\'clen\', \'soma\', \'sarx\', \'rhema\'):\\n pass\\n\\n elif name in (\'italic\', \'italico\'):\\n self.trans_change_end()\\n\\n elif name in (\'defpozn\', \'defpozno\'):\\n self.notes[self.current_note] = tuple(self.collected_note)\\n self.current_note = None\\n self.collected_note = []\\n\\n elif name == \'titulek\':\\n assert self.collected_title is not None, \\\\\\n \\"Empty element \\"\\n self.collecting_title = False\\n\\n def characters(self, content):\\n if self.collecting_title:\\n self.collected_title += content\\n else:\\n self.create_event(EType.characters, content)\\n\\n\\nif __name__ == \\"__main__\\":\\n downstream_handler = XMLGenerator(encoding=\\"utf-8\\",\\n short_empty_elements=True)\\n CEPProcessor(xml.sax.make_parser(),\\n downstream_handler).parse(sys.argv[1])"}],"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 02:40:25,389 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didSave","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py","version":7}}}' 2018-02-19 02:40:25,889 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: config: document: file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:25,890 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:40:25,891 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:25,891 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 02:40:26,033 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 187}, 'end': {'character': 19, 'line': 187}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 19, 'line': 206}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 212}, 'end': {'character': 19, 'line': 212}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 218}, 'end': {'character': 19, 'line': 218}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 226}, 'end': {'character': 19, 'line': 226}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 262}, 'end': {'character': 19, 'line': 262}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'severity': 2}] 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 02:40:26,034 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 02:40:26,035 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 02:40:27,603 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 198}, 'end': {'character': 24, 'line': 198}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 87, 'line': 208}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 95, 'line': 210}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 86, 'line': 242}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 83, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 92, 'line': 247}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 86, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 270}, 'end': {'character': 83, 'line': 270}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'severity': 2}], [{'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 187}, 'end': {'character': 19, 'line': 187}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 19, 'line': 206}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 212}, 'end': {'character': 19, 'line': 212}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 218}, 'end': {'character': 19, 'line': 218}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 226}, 'end': {'character': 19, 'line': 226}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 262}, 'end': {'character': 19, 'line': 262}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'severity': 2}], [{'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 263}, 'end': {'character': 28, 'line': 263}}}], [], []] [hook] 2018-02-19 02:40:27,603 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'uri': 'file:///home/matej/archiv/2010/clanky/CEP-Bible/CEPtoOSIS.py', 'diagnostics': [{'source': 'pycodestyle', 'message': 'E302 expected 2 blank lines, found 1', 'code': 'E302', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 36, 'line': 173}}, 'severity': 2}, {'source': 'pycodestyle', 'message': "E722 do not use bare except'", 'code': 'E722', 'range': {'start': {'character': 16, 'line': 198}, 'end': {'character': 24, 'line': 198}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (86 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 208}, 'end': {'character': 87, 'line': 208}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (94 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 210}, 'end': {'character': 95, 'line': 210}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 242}, 'end': {'character': 86, 'line': 242}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 246}, 'end': {'character': 83, 'line': 246}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (91 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 247}, 'end': {'character': 92, 'line': 247}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (85 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 250}, 'end': {'character': 86, 'line': 250}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'E501 line too long (82 > 79 characters)', 'code': 'E501', 'range': {'start': {'character': 79, 'line': 270}, 'end': {'character': 83, 'line': 270}}, 'severity': 2}, {'source': 'pycodestyle', 'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'start': {'character': 55, 'line': 460}, 'end': {'character': 55, 'line': 460}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'start': {'character': 0, 'line': 0}, 'end': {'character': 19, 'line': 0}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 77}, 'end': {'character': 19, 'line': 77}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 78}, 'end': {'character': 19, 'line': 78}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 83}, 'end': {'character': 19, 'line': 83}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 92}, 'end': {'character': 19, 'line': 92}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 93}, 'end': {'character': 19, 'line': 93}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 98}, 'end': {'character': 19, 'line': 98}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 144}, 'end': {'character': 19, 'line': 144}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 148}, 'end': {'character': 19, 'line': 148}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 157}, 'end': {'character': 19, 'line': 157}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 165}, 'end': {'character': 19, 'line': 165}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D101: Missing docstring in public class', 'code': 'D101', 'range': {'start': {'character': 0, 'line': 173}, 'end': {'character': 19, 'line': 173}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D107: Missing docstring in __init__', 'code': 'D107', 'range': {'start': {'character': 0, 'line': 174}, 'end': {'character': 19, 'line': 174}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 187}, 'end': {'character': 19, 'line': 187}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 206}, 'end': {'character': 19, 'line': 206}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 212}, 'end': {'character': 19, 'line': 212}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 218}, 'end': {'character': 19, 'line': 218}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 226}, 'end': {'character': 19, 'line': 226}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 232}, 'end': {'character': 19, 'line': 232}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 255}, 'end': {'character': 19, 'line': 255}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 259}, 'end': {'character': 19, 'line': 259}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 262}, 'end': {'character': 19, 'line': 262}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 417}, 'end': {'character': 19, 'line': 417}}, 'severity': 2}, {'source': 'pydocstyle', 'message': 'D102: Missing docstring in public method', 'code': 'D102', 'range': {'start': {'character': 0, 'line': 449}, 'end': {'character': 19, 'line': 449}}, 'severity': 2}, {'source': 'mccabe', 'message': 'Cyclomatic complexity too high: 25 (threshold 15)', 'severity': 2, 'range': {'start': {'character': 4, 'line': 263}, 'end': {'character': 28, 'line': 263}}}]} 2018-02-19 16:36:03,145 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 16:36:03,146 UTC - DEBUG - pyls.server - Got message: b'{"method":"initialize","jsonrpc":"2.0","id":1,"params":{"rootUri":"file:///home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject","initializationOptions":{},"capabilities":{},"rootPath":"/home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject","trace":"off"}}' 2018-02-19 16:36:03,147 UTC - DEBUG - pyls.language_server - Language server initialized with {'trace': 'off', 'initializationOptions': {}, 'rootUri': 'file:///home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject', 'rootPath': '/home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject', 'capabilities': {}} 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin pyls_mypy from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 16:36:03,658 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 16:36:03,659 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 16:36:03,659 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 16:36:03,659 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 16:36:03,659 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 16:36:03,659 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 16:36:03,659 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 16:36:03,659 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 16:36:03,659 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'rope_completion': {'enabled': False}}}, {'plugins': {'pydocstyle': {'enabled': False}}}] [hook] 2018-02-19 16:36:03,659 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] config: document: None workspace: 2018-02-19 16:36:03,659 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 16:36:03,660 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] config: document: None workspace: 2018-02-19 16:36:03,660 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 16:36:03,660 UTC - DEBUG - pyls.config.config - pyls_commands [hook] config: document: None workspace: 2018-02-19 16:36:03,660 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 16:36:03,660 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] config: document: None workspace: 2018-02-19 16:36:03,660 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 16:36:03,660 UTC - INFO - pyls.python_ls - Server capabilities: {'documentSymbolProvider': True, 'codeLensProvider': {'resolveProvider': False}, 'documentRangeFormattingProvider': True, 'completionProvider': {'resolveProvider': False, 'triggerCharacters': ['.']}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'renameProvider': True, 'textDocumentSync': 2, 'definitionProvider': True, 'codeActionProvider': True, 'executeCommandProvider': {'commands': []}, 'hoverProvider': True, 'referencesProvider': True, 'experimental': {}, 'documentFormattingProvider': True} 2018-02-19 16:36:03,725 UTC - DEBUG - pyls.server - Got message: b'{"method":"textDocument/didOpen","jsonrpc":"2.0","params":{"textDocument":{"uri":"file:///home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject/config.py","version":1,"languageId":"python","text":"# The default ``config.py``\\n# flake8: noqa\\n\\n\\ndef set_prefs(prefs):\\n \\"\\"\\"This function is called before opening the project\\"\\"\\"\\n\\n # Specify which files and folders to ignore in the project.\\n # Changes to ignored resources are not added to the history and\\n # VCSs. Also they are not returned in `Project.get_files()`.\\n # Note that ``?`` and ``*`` match all characters but slashes.\\n # \'*.pyc\': matches \'test.pyc\' and \'pkg/test.pyc\'\\n # \'mod*.pyc\': matches \'test/mod1.pyc\' but not \'mod/1.pyc\'\\n # \'.svn\': matches \'pkg/.svn\' and all of its children\\n # \'build/*.o\': matches \'build/lib.o\' but not \'build/sub/lib.o\'\\n # \'build//*.o\': matches \'build/lib.o\' and \'build/sub/lib.o\'\\n prefs[\'ignored_resources\'] = [\'*.pyc\', \'*~\', \'.ropeproject\',\\n \'.hg\', \'.svn\', \'_svn\', \'.git\', \'.tox\']\\n\\n # Specifies which files should be considered python files. It is\\n # useful when you have scripts inside your project. Only files\\n # ending with ``.py`` are considered to be python files by\\n # default.\\n #prefs[\'python_files\'] = [\'*.py\']\\n\\n # Custom source folders: By default rope searches the project\\n # for finding source folders (folders that should be searched\\n # for finding modules). You can add paths to that list. Note\\n # that rope guesses project source folders correctly most of the\\n # time; use this if you have any problems.\\n # The folders should be relative to project root and use \'/\' for\\n # separating folders regardless of the platform rope is running on.\\n # \'src/my_source_folder\' for instance.\\n #prefs.add(\'source_folders\', \'src\')\\n\\n # You can extend python path for looking up modules\\n #prefs.add(\'python_path\', \'~/python/\')\\n\\n # Should rope save object information or not.\\n prefs[\'save_objectdb\'] = True\\n prefs[\'compress_objectdb\'] = False\\n\\n # If `True`, rope analyzes each module when it is being saved.\\n prefs[\'automatic_soa\'] = True\\n # The depth of calls to follow in static object analysis\\n prefs[\'soa_followed_calls\'] = 0\\n\\n # If `False` when running modules or unit tests \\"dynamic object\\n # analysis\\" is turned off. This makes them much faster.\\n prefs[\'perform_doa\'] = True\\n\\n # Rope can check the validity of its object DB when running.\\n prefs[\'validate_objectdb\'] = True\\n\\n # How many undos to hold?\\n prefs[\'max_history_items\'] = 32\\n\\n # Shows whether to save history across sessions.\\n prefs[\'save_history\'] = True\\n prefs[\'compress_history\'] = False\\n\\n # Set the number spaces used for indenting. According to\\n # :PEP:`8`, it is best to use 4 spaces. Since most of rope\'s\\n # unit-tests use 4 spaces it is more reliable, too.\\n prefs[\'indent_size\'] = 4\\n\\n # Builtin and c-extension modules that are allowed to be imported\\n # and inspected by rope.\\n prefs[\'extension_modules\'] = []\\n\\n # Add all standard c-extensions to extension_modules list.\\n prefs[\'import_dynload_stdmods\'] = True\\n\\n # If `True` modules with syntax errors are considered to be empty.\\n # The default value is `False`; When `False` syntax errors raise\\n # `rope.base.exceptions.ModuleSyntaxError` exception.\\n prefs[\'ignore_syntax_errors\'] = False\\n\\n # If `True`, rope ignores unresolvable imports. Otherwise, they\\n # appear in the importing namespace.\\n prefs[\'ignore_bad_imports\'] = False\\n\\n # If `True`, rope will insert new module imports as\\n # `from import ` by default.\\n prefs[\'prefer_module_from_imports\'] = False\\n\\n # If `True`, rope will transform a comma list of imports into\\n # multiple separate import statements when organizing\\n # imports.\\n prefs[\'split_imports\'] = False\\n\\n # If `True`, rope will remove all top-level import statements and\\n # reinsert them at the top of the module when making changes.\\n prefs[\'pull_imports_to_top\'] = True\\n\\n # If `True`, rope will sort imports alphabetically by module name instead of\\n # alphabetically by import statement, with from imports after normal\\n # imports.\\n prefs[\'sort_imports_alphabetically\'] = False\\n\\n # Location of implementation of rope.base.oi.type_hinting.interfaces.ITypeHintingFactory\\n # In general case, you don\'t have to change this value, unless you\'re an rope expert.\\n # Change this value to inject you own implementations of interfaces\\n # listed in module rope.base.oi.type_hinting.providers.interfaces\\n # For example, you can add you own providers for Django Models, or disable the search\\n # type-hinting in a class hierarchy, etc.\\n prefs[\'type_hinting_factory\'] = \'rope.base.oi.type_hinting.factory.default_type_hinting_factory\'\\n\\n\\ndef project_opened(project):\\n \\"\\"\\"This function is called after opening the project\\"\\"\\"\\n # Do whatever you like here!"}}}' 2018-02-19 16:36:03,727 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] config: document: file:///home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject/config.py workspace: 2018-02-19 16:36:03,727 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 16:36:04,228 UTC - DEBUG - pyls.config.config - pyls_lint [hook] config: document: file:///home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject/config.py workspace: 2018-02-19 16:36:04,228 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 16:36:04,229 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 16:36:04,229 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 16:36:04,229 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 16:36:04,229 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 16:36:04,230 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 16:36:04,231 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 16:36:04,231 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 16:36:04,266 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 16:36:04,266 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 16:36:04,266 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 16:36:04,266 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 16:36:04,267 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 16:36:04,267 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 16:36:04,267 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 16:36:04,267 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'pydocstyle': {'enabled': False}, 'rope_completion': {'enabled': False}}} 2018-02-19 16:36:04,268 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 16:36:04,291 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 28, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': 'D202: No blank lines allowed after function docstring (found 1)', 'code': 'D202', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D401: First line should be in imperative mood; try rephrasing (found 'This')", 'code': 'D401', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D400: First line should end with a period (not 't')", 'code': 'D400', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D401: First line should be in imperative mood; try rephrasing (found 'This')", 'code': 'D401', 'range': {'end': {'character': 28, 'line': 109}, 'start': {'character': 0, 'line': 109}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D400: First line should end with a period (not 't')", 'code': 'D400', 'range': {'end': {'character': 28, 'line': 109}, 'start': {'character': 0, 'line': 109}}, 'severity': 2, 'source': 'pydocstyle'}] 2018-02-19 16:36:05,569 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'message': "E265 block comment should start with '# '", 'code': 'E265', 'range': {'end': {'character': 38, 'line': 23}, 'start': {'character': 4, 'line': 23}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': "E265 block comment should start with '# '", 'code': 'E265', 'range': {'end': {'character': 40, 'line': 33}, 'start': {'character': 4, 'line': 33}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': "E265 block comment should start with '# '", 'code': 'E265', 'range': {'end': {'character': 43, 'line': 36}, 'start': {'character': 4, 'line': 36}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 95}, 'start': {'character': 79, 'line': 95}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (92 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 93, 'line': 100}, 'start': {'character': 79, 'line': 100}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 101}, 'start': {'character': 79, 'line': 101}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 104}, 'start': {'character': 79, 'line': 104}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (100 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 101, 'line': 106}, 'start': {'character': 79, 'line': 106}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 32, 'line': 111}, 'start': {'character': 32, 'line': 111}}, 'severity': 2, 'source': 'pycodestyle'}], [], [{'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 28, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': 'D202: No blank lines allowed after function docstring (found 1)', 'code': 'D202', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D401: First line should be in imperative mood; try rephrasing (found 'This')", 'code': 'D401', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D400: First line should end with a period (not 't')", 'code': 'D400', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D401: First line should be in imperative mood; try rephrasing (found 'This')", 'code': 'D401', 'range': {'end': {'character': 28, 'line': 109}, 'start': {'character': 0, 'line': 109}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D400: First line should end with a period (not 't')", 'code': 'D400', 'range': {'end': {'character': 28, 'line': 109}, 'start': {'character': 0, 'line': 109}}, 'severity': 2, 'source': 'pydocstyle'}], [], []] [hook] 2018-02-19 16:36:05,569 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'message': "E265 block comment should start with '# '", 'code': 'E265', 'range': {'end': {'character': 38, 'line': 23}, 'start': {'character': 4, 'line': 23}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': "E265 block comment should start with '# '", 'code': 'E265', 'range': {'end': {'character': 40, 'line': 33}, 'start': {'character': 4, 'line': 33}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': "E265 block comment should start with '# '", 'code': 'E265', 'range': {'end': {'character': 43, 'line': 36}, 'start': {'character': 4, 'line': 36}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (80 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 81, 'line': 95}, 'start': {'character': 79, 'line': 95}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (92 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 93, 'line': 100}, 'start': {'character': 79, 'line': 100}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 101}, 'start': {'character': 79, 'line': 101}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (89 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 90, 'line': 104}, 'start': {'character': 79, 'line': 104}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'E501 line too long (100 > 79 characters)', 'code': 'E501', 'range': {'end': {'character': 101, 'line': 106}, 'start': {'character': 79, 'line': 106}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'W292 no newline at end of file', 'code': 'W292', 'range': {'end': {'character': 32, 'line': 111}, 'start': {'character': 32, 'line': 111}}, 'severity': 2, 'source': 'pycodestyle'}, {'message': 'D100: Missing docstring in public module', 'code': 'D100', 'range': {'end': {'character': 28, 'line': 0}, 'start': {'character': 0, 'line': 0}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': 'D202: No blank lines allowed after function docstring (found 1)', 'code': 'D202', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D401: First line should be in imperative mood; try rephrasing (found 'This')", 'code': 'D401', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D400: First line should end with a period (not 't')", 'code': 'D400', 'range': {'end': {'character': 28, 'line': 4}, 'start': {'character': 0, 'line': 4}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D401: First line should be in imperative mood; try rephrasing (found 'This')", 'code': 'D401', 'range': {'end': {'character': 28, 'line': 109}, 'start': {'character': 0, 'line': 109}}, 'severity': 2, 'source': 'pydocstyle'}, {'message': "D400: First line should end with a period (not 't')", 'code': 'D400', 'range': {'end': {'character': 28, 'line': 109}, 'start': {'character': 0, 'line': 109}}, 'severity': 2, 'source': 'pydocstyle'}], 'uri': 'file:///home/matej/archiv/2018/RedHat/projekty/control-center/.ropeproject/config.py'} 2018-02-19 17:19:05,242 UTC - INFO - pyls.language_server - Starting PythonLanguageServer IO language server 2018-02-19 17:19:05,242 UTC - DEBUG - pyls.server - Got message: b'{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"completion":{"completionItem":{"commitCharactersSupport":null,"documentationFormat":null,"snippetSupport":false},"dynamicRegistration":null}}},"initializationOptions":null,"processId":20113,"rootPath":"/home/matej","rootUri":"file:///home/matej","trace":"off"},"id":8}' 2018-02-19 17:19:05,243 UTC - DEBUG - pyls.language_server - Language server initialized with {'rootUri': 'file:///home/matej', 'capabilities': {'textDocument': {'completion': {'dynamicRegistration': None, 'completionItem': {'documentationFormat': None, 'commitCharactersSupport': None, 'snippetSupport': False}}}}, 'trace': 'off', 'rootPath': '/home/matej', 'processId': 20113, 'initializationOptions': None} 2018-02-19 17:19:05,751 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_definition from 2018-02-19 17:19:05,751 UTC - INFO - pyls.config.config - Loaded pyls plugin pydocstyle from 2018-02-19 17:19:05,751 UTC - INFO - pyls.config.config - Loaded pyls plugin pycodestyle from 2018-02-19 17:19:05,751 UTC - INFO - pyls.config.config - Loaded pyls plugin mccabe from 2018-02-19 17:19:05,751 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_completion from 2018-02-19 17:19:05,752 UTC - INFO - pyls.config.config - Loaded pyls plugin pyls_mypy from 2018-02-19 17:19:05,752 UTC - INFO - pyls.config.config - Loaded pyls plugin yapf from 2018-02-19 17:19:05,752 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_symbols from 2018-02-19 17:19:05,752 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_signature_help from 2018-02-19 17:19:05,752 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_completion from 2018-02-19 17:19:05,752 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_hover from 2018-02-19 17:19:05,753 UTC - INFO - pyls.config.config - Loaded pyls plugin pyflakes from 2018-02-19 17:19:05,753 UTC - INFO - pyls.config.config - Loaded pyls plugin jedi_references from 2018-02-19 17:19:05,753 UTC - INFO - pyls.config.config - Loaded pyls plugin rope_rename from 2018-02-19 17:19:05,753 UTC - DEBUG - pyls.config.config - pyls_settings [hook] config: 2018-02-19 17:19:05,753 UTC - DEBUG - pyls.config.config - finish pyls_settings --> [{'plugins': {'pydocstyle': {'enabled': False}}}, {'plugins': {'rope_completion': {'enabled': False}}}] [hook] 2018-02-19 17:19:05,754 UTC - DEBUG - pyls.config.config - pyls_dispatchers [hook] workspace: document: None config: 2018-02-19 17:19:05,754 UTC - DEBUG - pyls.config.config - finish pyls_dispatchers --> [] [hook] 2018-02-19 17:19:05,754 UTC - DEBUG - pyls.config.config - pyls_initialize [hook] workspace: document: None config: 2018-02-19 17:19:05,754 UTC - DEBUG - pyls.config.config - finish pyls_initialize --> [] [hook] 2018-02-19 17:19:05,754 UTC - DEBUG - pyls.config.config - pyls_commands [hook] workspace: document: None config: 2018-02-19 17:19:05,755 UTC - DEBUG - pyls.config.config - finish pyls_commands --> [] [hook] 2018-02-19 17:19:05,755 UTC - DEBUG - pyls.config.config - pyls_experimental_capabilities [hook] workspace: document: None config: 2018-02-19 17:19:05,755 UTC - DEBUG - pyls.config.config - finish pyls_experimental_capabilities --> [] [hook] 2018-02-19 17:19:05,755 UTC - INFO - pyls.python_ls - Server capabilities: {'definitionProvider': True, 'referencesProvider': True, 'codeActionProvider': True, 'documentSymbolProvider': True, 'documentFormattingProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'textDocumentSync': 2, 'completionProvider': {'triggerCharacters': ['.'], 'resolveProvider': False}, 'codeLensProvider': {'resolveProvider': False}, 'hoverProvider': True, 'executeCommandProvider': {'commands': []}, 'documentRangeFormattingProvider': True, 'experimental': {}, 'renameProvider': True} 2018-02-19 17:19:05,780 UTC - DEBUG - pyls.server - Got message: b'{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"python","text":"#!/usr/bin/env python\\nfrom __future__ import print_function\\n\\nimport logging\\nimport sys\\nimport time\\n\\nfrom ctypes import CDLL, c_char_p\\n\\nimport gi\\ngi.require_version(\'Goa\', \'1.0\')\\nfrom gi.repository import Goa\\n\\nlogging.basicConfig(format=\'%(levelname)s:%(funcName)s:%(message)s\',\\n stream=sys.stdout, level=logging.DEBUG)\\nlog = logging.getLogger(\'t_kinit\')\\n\\ngoa_blib = CDLL(\'libgoa-backend-1.0.so.1\')\\nGFALSE = 0\\nGTRUE = 1\\n\\nclass GoaProvider(object):\\n \\"\\"\\"Python bindings over GoaProvider class\\"\\"\\"\\n def __init__(self, provider_type):\\n # This is UNMUTEABLE sack of bytes\\n self.provider_type = goa_blib.goa_provider_get_for_provider_type(\\n c_char_p(provider_type))\\n log.debug(\'self.provider_type = %s (%s)\', self.provider_type,\\n type(self.provider_type))\\n\\n def refresh_account(self, client, obj):\\n cl = client # XXX how to get C version of GoaClient\\n o = obj # XXX how to get C version of GoaObject\\n res = goa_blib.goa_provider_refresh_account(self.provider_type,\\n cl, o, None, None)\\n if res == GFALSE:\\n raise IOError(\\"Account %s has not been refreshed!\\" % obj)\\n\\n\\ndef get_krb_accounts():\\n out = []\\n c = Goa.Client.new_sync(None)\\n acc_list = c.get_accounts()\\n for obj in acc_list:\\n test_a = obj.get_account()\\n if test_a.props.provider_type == \'kerberos\':\\n out.append(obj)\\n return c, out\\n\\n\\ncl, accounts = get_krb_accounts()\\nfor a in accounts:\\n acc = a.get_account()\\n # print(dir(acc))\\n # exp_secs = acc.call_ensure_credentials_sync(None)\\n # expires = time.localtime(time.time() + exp_secs)\\n # print(time.strftime(\\"%d.%m.%Y %H:%M:%S\\", expires))\\n acc_prov = GoaProvider(acc.props.provider_type)\\n acc_prov.refresh_account(cl, a)","uri":"file:///home/matej/t_kinit.py","version":0}}}' 2018-02-19 17:19:05,782 UTC - DEBUG - pyls.config.config - pyls_document_did_open [hook] workspace: document: file:///home/matej/t_kinit.py config: 2018-02-19 17:19:05,782 UTC - DEBUG - pyls.config.config - finish pyls_document_did_open --> [] [hook] 2018-02-19 17:19:06,292 UTC - DEBUG - pyls.config.config - pyls_lint [hook] workspace: document: file:///home/matej/t_kinit.py config: 2018-02-19 17:19:06,318 UTC - DEBUG - pyls.plugins.pydocstyle_lint - Got pydocstyle errors: [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 22}}}, {'code': 'D400', 'severity': 2, 'message': "D400: First line should end with a period (not 's')", 'source': 'pydocstyle', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}}, {'code': 'D204', 'severity': 2, 'message': 'D204: 1 blank line required after class docstring (found 0)', 'source': 'pydocstyle', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'line': 23, 'character': 0}, 'end': {'line': 23, 'character': 22}}}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'line': 30, 'character': 0}, 'end': {'line': 30, 'character': 22}}}, {'code': 'D103', 'severity': 2, 'message': 'D103: Missing docstring in public function', 'source': 'pydocstyle', 'range': {'start': {'line': 39, 'character': 0}, 'end': {'line': 39, 'character': 22}}}] 2018-02-19 17:19:06,322 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 17:19:06,322 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 17:19:06,323 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 17:19:06,323 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 17:19:06,323 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 17:19:06,324 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 17:19:06,324 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 17:19:06,324 UTC - DEBUG - pyls.plugins.mccabe_lint - Running mccabe lint with threshold: 15 2018-02-19 17:19:06,327 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 17:19:06,327 UTC - DEBUG - pyls.config.config - Got user config from PyCodeStyleConfig: {} 2018-02-19 17:19:06,327 UTC - DEBUG - pyls.config.config - With user configuration: {} 2018-02-19 17:19:06,327 UTC - DEBUG - pyls.config.config - With plugin configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 17:19:06,327 UTC - DEBUG - pyls.config.config - With lsp configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 17:19:06,328 UTC - DEBUG - pyls.config.source - Using cached configuration for () 2018-02-19 17:19:06,328 UTC - DEBUG - pyls.config.config - Got project config from PyCodeStyleConfig: {} 2018-02-19 17:19:06,328 UTC - DEBUG - pyls.config.config - With project configuration: {'plugins': {'rope_completion': {'enabled': False}, 'pydocstyle': {'enabled': False}}} 2018-02-19 17:19:06,328 UTC - DEBUG - pyls.plugins.pycodestyle_lint - Got pycodestyle settings: {} 2018-02-19 17:19:06,738 UTC - DEBUG - pyls.config.config - finish pyls_lint --> [[{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 22}}}, {'code': 'D400', 'severity': 2, 'message': "D400: First line should end with a period (not 's')", 'source': 'pydocstyle', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}}, {'code': 'D204', 'severity': 2, 'message': 'D204: 1 blank line required after class docstring (found 0)', 'source': 'pydocstyle', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'line': 23, 'character': 0}, 'end': {'line': 23, 'character': 22}}}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'line': 30, 'character': 0}, 'end': {'line': 30, 'character': 22}}}, {'code': 'D103', 'severity': 2, 'message': 'D103: Missing docstring in public function', 'source': 'pydocstyle', 'range': {'start': {'line': 39, 'character': 0}, 'end': {'line': 39, 'character': 22}}}], [{'message': "'time' imported but unused", 'severity': 2, 'range': {'start': {'line': 5, 'character': 0}, 'end': {'line': 5, 'character': 12}}, 'source': 'pyflakes'}], [], [{'code': 'E402', 'message': 'E402 module level import not at top of file', 'severity': 2, 'range': {'start': {'line': 11, 'character': 0}, 'end': {'line': 11, 'character': 30}}, 'source': 'pycodestyle'}, {'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 27}}, 'source': 'pycodestyle'}, {'code': 'W292', 'message': 'W292 no newline at end of file', 'severity': 2, 'range': {'start': {'line': 58, 'character': 35}, 'end': {'line': 58, 'character': 35}}, 'source': 'pycodestyle'}], []] [hook] 2018-02-19 17:19:06,738 UTC - DEBUG - pyls.server - Sending notification textDocument/publishDiagnostics: {'diagnostics': [{'code': 'D100', 'severity': 2, 'message': 'D100: Missing docstring in public module', 'source': 'pydocstyle', 'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 22}}}, {'code': 'D400', 'severity': 2, 'message': "D400: First line should end with a period (not 's')", 'source': 'pydocstyle', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}}, {'code': 'D204', 'severity': 2, 'message': 'D204: 1 blank line required after class docstring (found 0)', 'source': 'pydocstyle', 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 22}}}, {'code': 'D107', 'severity': 2, 'message': 'D107: Missing docstring in __init__', 'source': 'pydocstyle', 'range': {'start': {'line': 23, 'character': 0}, 'end': {'line': 23, 'character': 22}}}, {'code': 'D102', 'severity': 2, 'message': 'D102: Missing docstring in public method', 'source': 'pydocstyle', 'range': {'start': {'line': 30, 'character': 0}, 'end': {'line': 30, 'character': 22}}}, {'code': 'D103', 'severity': 2, 'message': 'D103: Missing docstring in public function', 'source': 'pydocstyle', 'range': {'start': {'line': 39, 'character': 0}, 'end': {'line': 39, 'character': 22}}}, {'message': "'time' imported but unused", 'severity': 2, 'range': {'start': {'line': 5, 'character': 0}, 'end': {'line': 5, 'character': 12}}, 'source': 'pyflakes'}, {'code': 'E402', 'message': 'E402 module level import not at top of file', 'severity': 2, 'range': {'start': {'line': 11, 'character': 0}, 'end': {'line': 11, 'character': 30}}, 'source': 'pycodestyle'}, {'code': 'E302', 'message': 'E302 expected 2 blank lines, found 1', 'severity': 2, 'range': {'start': {'line': 21, 'character': 0}, 'end': {'line': 21, 'character': 27}}, 'source': 'pycodestyle'}, {'code': 'W292', 'message': 'W292 no newline at end of file', 'severity': 2, 'range': {'start': {'line': 58, 'character': 35}, 'end': {'line': 58, 'character': 35}}, 'source': 'pycodestyle'}], 'uri': 'file:///home/matej/t_kinit.py'} 2018-02-19 17:19:11,612 UTC - DEBUG - pyls.server - Got message: b'{"jsonrpc":"2.0","method":"textDocument/rename","params":{"newName":"prov_t","position":{"character":17,"line":25},"textDocument":{"uri":"file:///home/matej/t_kinit.py"}},"id":20}' 2018-02-19 17:19:11,613 UTC - DEBUG - pyls.config.config - pyls_rename [hook] workspace: document: file:///home/matej/t_kinit.py new_name: prov_t config: position: {'character': 17, 'line': 25} 2018-02-19 17:19:11,617 UTC - DEBUG - pyls.plugins.rope_rename - Executing rename of provider_type to prov_t